-1

我不得不将笔属性添加到纸张模型以停止错误“无法批量分配:笔”,即使我认为我有笔属性的 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"}
4

1 回答 1

0

看起来你的单数/复数命名有一些细微的差异。

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

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

并且可能:

attr_accessible :pens_attributes

以及(可能):

 params[:pens]

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

于 2012-10-13T06:48:01.630 回答