2016-11-24 21 views
1

私は以前に尋ねられたかもしれない疑問を持っていますが、適切な記述を見つけるのが難しいです。私は誰かが私を助けることを願っています。JavascriptのHAMLのJavascript

私が設定した行の下のコードvar price私は、javascript変数accu_idを追加して、レールを介してDB内のレコードを検索したいと考えています。どのように私は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を使用してコントローラ内でクエリを実行するのが最善の方法です。このコンテキストでは、JS変数を埋め込みルビの内部に追加することはできません。私はこれがどのように達成するための良い指針になると思います:http://stackoverflow.com/a/15422887/615410 – ma3x

答えて

3

2つのオプションがあります。

  1. あなたはJSON形式で処理されたデータが含まれてい

    VARデータ= @processed_data // JSONデータを、次のようなマッピングの概念を使用することができますデータベース

  2. からデータを取得するために、AJAX要求を使用することができます。
    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 

例は、2つのエントリは、次に@processed_dataが上記

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

次のような値を含むている製品にテーブルを

想定以下のようなデータを含みます変数jsに直接割り当てられたデータデータのようにアクセスし、data.keyのようにアクセスします。

最初のオプションが最善の選択であり、2番目のものが可能です。

:ルビの中でjs変数を使用することはできません。

関連する問題