F.在编辑时选择输入而不保存值

时间:2013-12-11 17:54:40

标签: ruby-on-rails ruby ruby-on-rails-4

我的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

2 个答案:

答案 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)

我遇到了同样的问题,我发现我在控制器文件中拼错了对象的名字。它没有保存,因为找不到匹配的对象。