Rails 4 Has_one嵌套表单 - Error Unpermiited参数

时间:2016-09-30 23:45:59

标签: ruby-on-rails nested-forms has-one

我无法弄清楚我做错了什么。我有两个模型:

class Product < ActiveRecord::Base
  has_one :review, dependent: :destroy
  accepts_nested_attributes_for :review, allow_destroy: true
end
class Review < ActiveRecord::Base
  belongs_to :product
end

他们有一个has_one关系。数据库在评论表中有product_id列。

我的控制器直接在新的(@product = Product.new)上编辑操作没有任何内容。以下是我的强力指南:

def product_params
  params.require(:product).permit(:name, ..., review_attributes: [:id, :rating, :text, :author, :name] )
end

我的表格如下:

<%= form_for(@product, :html => {multipart: true, :class => "form-horizontal"}) do |f| %>
...

    <%= f.fields_for :review do |ff| %>
      <%= ff.hidden_field :author, :value => 'Yes' %>
          <%= ff.label :rating, "Enter a Rating" %>
          <%= ff.number_field :rating, class: "form-control input-md", min: 0, max: 5, step: 0.5 %>   
          <%= ff.label :name, "Title of Review" %>
          <%= ff.text_field :name, class: "form-control input-md" %>   
            <%= ff.label :text, "Review Description" %>
            <%= ff.text_area :text, class: "form-control" %>
    <% end %>
       <%= f.submit "Create Product", :class => 'btn btn-default btn-lg' %>
<% end %>

我无法弄清楚为什么当我在模型中有accepts_nested_attributes时,嵌套表单没有出现,无论我是否需要accept_nested_attributes,以及为什么我在没有这个时会收到错误说“未经许可的参数:审查” accepted_nested_attributes并提交表格。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

在控制器中,尝试在呈现该表单的方法中构建审阅对象...

def new
  @product = Product.new
  @product.build_review
end