我的Rails应用程序上有一个f.select输入来自这个辅助方法。
def option_groups_from_collection_for_select(collection, group_method, group_label_method, option_key_method, option_value_method)
collection.map do |group|
option_tags = options_from_collection_for_select(
group.send(group_method), option_key_method, option_value_method)
content_tag(:optgroup, option_tags, :label => group.send(group_label_method))
end.join.html_safe
end
视图中的选择如下所示。
<%= f.select(:type_id, option_groups_from_collection_for_select(@categories, :types, :category, :id, :name)) %>
保存帖子时,正确的type_id会被保存,但是当我去编辑帖子时,选择不会显示当前所选的项目。我假设我的代码出了问题。
这是我的类别模型
has_many :posts
has_many :types, :order => "name"
这是我的型号
belongs_to :category
答案 0 :(得分:4)
您必须提供第5个参数,即所选键。请尝试以下代码:
<%= f.select(:type_id, option_groups_from_collection_for_select(@categories, :types, :category, :id, :name, f.object.type_id)) %>
f.object.type_id
返回表单中传递的对象的type_id属性(如果有)。否则,它将为零,并且不会选择任何内容。
答案 1 :(得分:0)
我遇到了同样的问题,我发现我在控制器文件中拼错了对象的名字。它没有保存,因为找不到匹配的对象。