另一个简单的问题我肯定会提前抱歉,但我似乎无法找到解决方案。
我有一个带有选择字段(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 :(得分:0)
f.select
的参数为:attribute_name
,option_tags
,options
。
option_tags
应该是一串html选项标签
有一些帮助者可以构造这样一个字符串,即一组值,一个集合等:options_for_select
,options_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。