2016-11-24 4 views
1

이전에 물어볼 수있는 질문이 있지만 적절한 설명을 찾는 데 어려움이 있습니다. 누군가가 나를 도울 수 있기를 바랍니다.자바 스크립트 HAML의 자바 스크립트

아래 코드에서 내가 설정 한 행 var price 레일을 통해 내 DB의 레코드를 찾으려면 javacript 변수 accu_id을 추가하고 싶습니다. 자바 스크립트의 임베디드 레일에서 어떻게해야합니까?

:javascript 
    $('#accu').change(function() { 
     var accu_id = $("#accu")[0].selectedOptions[0].value 
     var price = "#{currency(Product.find_by(id: accu_id).price2)}" 
     $('#price_accu').append(price) 
    }); 

또는 더 쉬운 방법이 있습니까?

+0

왜 pure JS와 jQuery를 혼합하고 있습니까? –

+1

가장 좋은 방법은 AJAX를 사용하고 컨트롤러 내부에서 쿼리를 수행하는 것입니다. 이런 맥락에서 임베디드 루비 안에 JS 변수를 추가 할 수 없습니다. 나는 이것을 달성하는 방법에 대한 좋은 지침이 될 것 같아요 : http://stackoverflow.com/a/15422887/615410 – ma3x

답변

3

두 가지 옵션이 있습니다.

  1. 당신은 데이터베이스
  2. 당신은 JSON 형식의 데이터를 처리 포함

    VAR 데이터 = @processed_data // JSON 데이터를 다음과 같이 매핑 개념을 사용할 수있는 데이터를 얻을 수 AJAX 요청을 사용할 수 있습니다.
    var accu_id = $ ("# accu") [0] .selectedOptions [0]. 값
    var price = data.accu_id; 여기

@processed_data는

@processed_data = currency_calculation 

def currency_calculation 
    Product.all.map { |product| [product.id, currency(product.price2) ] }.as_json 
end 

예는 두 개의 엔트리는 다음 @processed_data 위

{ "1" => "20.00", "2" => "25.50" } 

다음과 같은 값을 포함하고있는 제품을 표

가정은 다음과 같은 데이터를 포함 변수에 직접 할당 된 데이터 데이터data.key와 같이 액세스하십시오.

첫 번째 옵션이 가장 좋은 선택이고 두 번째는 가능한 것입니다.

참고 : 루비 안에 js 변수를 사용할 수 없습니다.

관련 문제