2016-11-24 39 views
1

我有一個問題,可能以前曾問過,但我無法找到正確的描述。我希望有人能幫助我。JavaScript中的HAML中的Javascript

在下面的代碼行我在哪裏設置var price我想添加javascript變量accu_id通過rails在我的數據庫中查找記錄。我如何在JavaScript中的嵌入式軌道中做到這一點?

: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

你爲什麼要混用純JS和jQuery? –

+1

最好的方法是使用AJAX並在控制器中執行查詢。在這種情況下,您不能在嵌入式ruby中添加JS變量。我想這可能是一個很好的指導如何實現這一點:http://stackoverflow.com/a/15422887/615410 – ma3x

回答

3

你有兩種選擇。

  1. 您可以使用AJAX請求從數據庫
  2. 您可以使用映射的概念像下面

    VAR數據= @processed_data // JSON數據,其中包含JSON格式處理的數據中獲取數據。
    var accu_id = $(「#accu」)[0] .selectedOptions [0] .value
    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" } 

上述數值數據數據直接分配給js變量數據和訪問像data.key

第一個選項是最好的選擇,第二個選項是可能的。

注意:你不能在ruby裏面使用js變量。