2013-07-24 188 views
0

另一個簡單的問題,我確定提前很抱歉,但我似乎無法找到我想要做的解決方案。Rails form_for設置選項和設置選擇的選項

我有一個選擇字段(vehicle_size)的表單,我想用數據庫中的所有現有選項填充vehicle_size設置的記錄。我也想設置選擇選項,無論數據庫中的選項當前設置爲(如果設置),但我想我遇到的問題是這個值沒有被設置的原因。

我現在有這樣的代碼:

<%= f.select(:vehicle_size, @models.index_by {|m| m.vehicle_size}, :selected => :vehicle_size) %> 

這是正確的,但在我的新的編輯頁面填充選擇選項(包括採用這種形式)選擇菜單是空白,即使目前所有的記錄都被設置到現有選項之一(vehicle_size未來可能對某些記錄實際上是空白的)。

如果我然後從菜單中選擇一個選項並保存記錄vehicle_size選項有一個奇怪的值。東西沿着線:

#<Model:0x007fd13e6c3790> 

我敢肯定,我使用index_by在錯誤的道路等我失去了我一些指針將是巨大的。

回答

0

f.select的參數是:attribute_name,option_tags,options
option_tags應該是一個html選項標籤的字符串。
有一些助手可以從一系列值,一個集合等構造這樣一個字符串:options_for_select,options_from_selection_for_select

你必須使用這些助手之一。

您可以獲取現有vehicle_size ES:

Model.pluck(:vehicle_size).uniq 

所以你的選擇可能看起來像:

<%= f.select :vehicle_size, options_for_select(Model.pluck(:vehicle_size).uniq,@model.vehicle_size) %> 

Rails Guide的形式助手。

+0

非常感謝。我真的需要找到正確的術語,並花一些時間學習更多的Ruby和Rails,謝謝你的幫助。 –