Ruby on rails Rails 4嵌套表单问题

Ruby on rails Rails 4嵌套表单问题,ruby-on-rails,Ruby On Rails,您好,我正在使用嵌套表单插件,并试图使其适用于Rails4而不是Rails3。基本上,我的模型如下所示: has_many :item, :dependent => :destroy accepts_nested_attributes_for :item, :reject_if => lambda { |a| a[:item].blank? }, :allow_destroy => true <%= nested_form_for(@store) do |f| %&g

您好,我正在使用嵌套表单插件,并试图使其适用于Rails4而不是Rails3。基本上,我的模型如下所示:

has_many :item, :dependent => :destroy

accepts_nested_attributes_for :item, :reject_if => lambda { |a| a[:item].blank? }, :allow_destroy => true
<%= nested_form_for(@store) do |f| %>
  <%= f.fields_for :item do |item_form| %>
     <%= item_form.text_field :name %>
     <%= item_form.link_to_remove "Remove this item" %>
  <% end %>
<% end %>
def store_params
    params.require(:store).permit(:name, :owner, :description,:url, :user, item_attributes: [:id, :name])
end
我的观点是这样的:

has_many :item, :dependent => :destroy

accepts_nested_attributes_for :item, :reject_if => lambda { |a| a[:item].blank? }, :allow_destroy => true
<%= nested_form_for(@store) do |f| %>
  <%= f.fields_for :item do |item_form| %>
     <%= item_form.text_field :name %>
     <%= item_form.link_to_remove "Remove this item" %>
  <% end %>
<% end %>
def store_params
    params.require(:store).permit(:name, :owner, :description,:url, :user, item_attributes: [:id, :name])
end
但它仍然提出:

Unpermitted parameters: item_attributes

谢谢你的帮助

您还必须允许item的字段(比如name)

所以试试这个:

def store_params
    params.require(:store).permit(:name, :owner, :description,:url, :user, item_attributes: [:name])
end

有时您必须指定:id,如下所示:

has_many :item, :dependent => :destroy

accepts_nested_attributes_for :item, :reject_if => lambda { |a| a[:item].blank? }, :allow_destroy => true
<%= nested_form_for(@store) do |f| %>
  <%= f.fields_for :item do |item_form| %>
     <%= item_form.text_field :name %>
     <%= item_form.link_to_remove "Remove this item" %>
  <% end %>
<% end %>
def store_params
    params.require(:store).permit(:name, :owner, :description,:url, :user, item_attributes: [:id, :name])
end

在上周的一个类似案例中,没有指定:id使Rails 4创建一个新实体,而不是更新现有实体。

您可能还需要允许item字段。我不确定这是否与您的问题有关,但嵌套的表单gem不显式支持Rails 4。请尝试gem。这似乎是使用Rails 4.0的一个好方法,因为它更新了一点。添加:我修复了它,这样我就不会在每次提交时都将列表相乘。我还必须添加:_destroy,如果我想正确删除嵌套表单。我想知道是否有什么方法可以在不使用许可的情况下将整个属性列为白名单!