使用option_groups_from_collection_for_select时硬编码选择标签是不是很糟糕

时间:2009-09-19 02:14:59

标签: ruby-on-rails

我一直在与option_groups_from_collection_for_select合作,并且没有看到一种方法在绑定到模型的表单上使用它而不对选择标记进行硬编码。虽然我只在Rails工作了几个星期,但似乎有更好的方法(例如。collection_select甚至select)。

是否存在“Rails方式”以避免硬编码<选择>使用option_groups_from_collection_for_select时标记?

我的观点中的代码(网站has_many类别,我正在尝试按网站对我的列表进行分组)

<select id="item_category_id" name="item[category_id]">
    <%= option_groups_from_collection_for_select(Site.all, :categories, :name, :id, :name, @item.category_id) %>
</select>

3 个答案:

答案 0 :(得分:3)

您是否正在使用form_for中的对象?如果是这样,这会产生你需要的东西:

form_for @item do |f|
  f.grouped_collection_select(:category_id, Site.all, :categories, :name, :id, :name, :include_blank => true)
end

或没有form_for

grouped_collection_select(:item, :category_id, Site.all, :categories, :name, :id, :name, :include_blank => true)

对等

答案 1 :(得分:2)

尝试select_tag而不是select,例如

答案 2 :(得分:0)

选择不起作用?

<%= select :item, :category_id, option_groups_from_collection_for_select(Site.all, :categories, :name, :id, :name, @item.category_id) %>