2011-04-21 45 views
0

我有一個集合:我有一個集合,要生成與它的JavaScript對象

@products = Product.where("product_type = ?", 3) 

我現在想創建一個JavaScript對象,這樣我就可以像UI執行查找:

my_products[2342] 

,它將返回:

"some_name" 

我相信它應該是這樣的:

var my_products = { 
    2342: "some_name", 
    5321: "there blah" 

} 

什麼是產生這在我的控制器的動作的好方法?

回答

3

的ActiveRecord和紅寶石一般有一個方法to_json,應該幫助你做你在找什麼。

基本上構建你想在Ruby中創建和調用to_json創建一個字符串,是一個有效的JavaScript對象使用數組。

1

我推薦使用to_json,但如果你願意,你可以產生另一種選擇的對象JS使用js.erb模板的文字符號。

視圖/產品/ products.js.erb

var products = { 
<% @products.each do |product| %> 
    <%= "#{product.id}: \"#{@product.name}\"," %> 
<% end %> 
} 

然後,設置使用一個專用方法或responds_to塊的控制器方法。最後,讓AJAX調用該方法並執行返回的代碼,這將導致您訪問js.erb模板中定義的產品變量。

+0

小心這個!您需要確保您正確地對值字符串進行編碼(轉義引號),並且如果除了整數之外的任何內容都將其放入名稱字段中,則需要將名稱字段放在引號中並正確轉義。 – 2011-04-21 02:30:18

+0

@Brandon非常好的一點。我試圖保持我的例子簡單,以便有人能夠在實現細節中看到機制而不會迷失方向。手動處理事情時,您必須小心。就像我在開始時說,我建議在使用to_json ...但我也許應該編輯自己的帖子,以使之成爲更加清楚一點...... – brettish 2011-04-21 02:36:33

+0

不夠公平 - 沒有暗示你錯了,本來只是想增加給你的答案,並使互聯網更好! – 2011-04-21 02:43:00

相關問題