Rails form_for设置选项并设置所选选项

时间:2013-07-24 14:08:09

标签: mysql ruby-on-rails select indexing 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,所以关于我所缺少的一些指针会很棒。

1 个答案:

答案 0 :(得分:0)

f.select的参数为:attribute_nameoption_tagsoptions
option_tags应该是一串html选项标签 有一些帮助者可以构造这样一个字符串,即一组值,一个集合等:options_for_selectoptions_from_selection_for_select

你必须使用其中一个助手。

您可以使用以下内容获取现有的vehicle_size

Model.pluck(:vehicle_size).uniq

所以你的选择看起来像:

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

请参阅表单助手上的Rails Guide