2017-03-02 9 views
2

私は次のコードを返すためにはRuby on Railsでselect方法を使用するビューがあります:私は基本的に、このような私の見解でlink_to方法を、使用しています、JavaScriptファイルにこの情報を渡すためにRailsでは、データベースからJavaScriptを照会してテキストボックスに入力する方法を教えてください。

<select class="form-control" name="xyz" id="food_id"> 
    <option value="1">Peach</option> 
    <option value="2">Apple</option> 
    <option value="3">Orange</option> 
    </select> 

を以下の通り:JSファイルで

<%= link_to "Import text", "#/", :onclick => "fillTextBox()" %>

、どのように私は基本的にドロップダウンリストで選択された値の名前と説明を得ることができますか?

var foodName = Food.find(foodID).name; 
var foodDescription = Food.find(foodID).description; 

これが可能である:

function fillTextBox(){ 
    var dropdown = document.getElementById('food_id'); 
    var foodID = dropdown[dropdown.selectedIndex].value; 
} 

は、私のような何かをする必要があります。これは、私の知る限りが混乱してしまった前に私が得ているようですか?残りのJS関数は、基本的にはfoodNameとfoodDescriptionを使ってテキストボックスを埋めますが、まず最初にこの情報のデータベースを照会できるようにする必要があります。

+2

あなたのアプリへのAJAXコールを何らかのGETリクエストで行い、残りの食べ物データを取得しますか? –

+0

'Food'はjavascriptから入手できません。それは別の言語です、あなたのRubyのものはありません。 –

+0

@maxpieええ、私は知っています。それを利用可能にする方法はありますか?拡張子として.erファイルを.jsファイルに追加することはできませんし、実際のレールコードを解釈できますか? – LewlSauce

答えて

1

Gon gemを試したことがありますか?お使いのコントローラで

:あなたのケースでは

def some_method 
    gon.foods = Food.all 
end 

その後、あなたのjsの中

gon.foods 

、あなたはコントローラに完全Foodコレクションを添付して、JavaScriptでそのidFoodを見つけることができますこのようなsomethigを使用して

var food = gon.foods.filter(function(food) { 
    return food.id === foodID; 
})[0]; 
+0

ありがとうたくさんの男。私は基本的に私の選択メソッドにカスタム属性を追加することで、AJAXから要求されたデータやこの宝石を使用してデータを組み込むことで回避策を見つけることになりました。だから私は基本的に '

+0

'data-description'私は良い選択だと思います – rogelio

+0

Gotcha。合意したもう一度ありがとう! – LewlSauce

関連する問題