2017-03-02 72 views
2

我有一個使用Ruby on Rails中的select方法返回下面的代碼視圖:在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> 

將此信息傳遞到JavaScript文件,我基本上使用link_to方法在我看來,這樣的如下所示:

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

在JS文件,我怎麼能基本上得到的名稱和任何值在下拉列表中選擇的描述?這是據我才糊塗了,因爲我已經得到了:

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

我需要做的是這樣的:

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

這可能嗎? JS函數的其餘部分基本上使用foodName和foodDescription來填充文本框,但我首先需要首先能夠在數據庫中查詢這些信息。

+2

通過某種GET請求向您的應用程序發出AJAX調用以獲取食物數據的其餘部分? –

+0

'食品'不適用於JavaScript。這是一種不同的語言,沒有你的Ruby的東西在那裏。 –

+0

@maxpie是啊,我知道。有沒有辦法讓它可用?我不能將.er文件作爲擴展名添加到.js文件中,並讓它解釋實際的rails代碼。 – LewlSauce

回答

1

你有沒有試過Gon gem

在你的控制器:

def some_method 
    gon.foods = Food.all 
end 
在你的js

gon.foods 

在你的情況

然後,您可以將完整的Food集合中的控制器,然後找到Foodid在javascript使用類似這樣的東西

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

非常感謝。我最終找到了一種解決方法,在我的select方法中基本上添加了一個自定義屬性,以包含我原本通過AJAX請求的數據或使用此gem。所以現在我基本上只有'

+0

'data-description'我認爲是一個更好的選擇 – rogelio

+0

Gotcha。同意。再次感謝! – LewlSauce

相關問題