嵌套表单不能批量分配,创建动作

时间:2012-10-13 06:40:36

标签: ruby-on-rails ruby-on-rails-3 nested-forms has-many belongs-to

我必须将笔属性添加到纸模型中以停止错误“无法批量分配:笔”,甚至认为我有pen_attributes的attr_accessible。

现在,我收到了“未知属性:笔”错误。它指向我创建动作的第二行。我无法理解。

我基本上希望让Paper New操作创建笔并将其分配给纸张。

Paper model

attr_accessible  :name, :size, :line, 
                    :pen_attributes,
                        :pen, :colour, :style

has_many :pens
accepts_nested_attributes_for :pens

Pens model

attr_accessible :name, :size, :line, :paper_attributes, :paper_id

belongs_to :paper

<%= simple_nested_form_for @paper do |f| %>
        <%= f.input :name %>
        <%= f.input :size, :placeholder => "text" %>
        <%= f.input :line %>

            <%= f.fields_for @pen do |h| %>
            <%= h.input :pen,  %>
            <%= h.input :colour %>
            <%= h.button :submit, :label => "create" %>
    <% end %>
    <% end %>

Paper Controller


  def new
    @user = current_user
    @paper = @user.paper.build(params[:paper])
            @pen = Pen.new(params[:pen])
  end

  def create
    @user = current_user
    @paper = @user.papers.build(params[:paper])
    @pen = @paper.pens.build(params[:pen])


    if @paper.save
        flash[:notice] = "#{@paper.name} Created"
        redirect_to(:action => "index")
    else
        flash.now[:notice] = "Error"
        render 'new'    
    end
  end

{"utf8"=>"✓",
 "authenticity_token"=>"Z8vncB9ewDM1bWiKfsPHOGlkxcGpfhPjv0xpamudIIs=",
 "paper"=>{"name"=>"three",
 "size"=>"three",
 "colour"=>"red",
 "pen"=>{"colour"=>"test",
 "pen"=>"test"}},
 "commit"=>"Create"}

1 个答案:

答案 0 :(得分:0)

您的单数/复数命名似乎有一些小的差异。

我认为您需要调整以下内容:

<%= f.fields_for :pens, @pen do |h| %>

可能:

attr_accessible :pens_attributes

以及(可能):

 params[:pens]

希望这有帮助,祝你好运!