-1

pen_attributesのattr_accessibleを持っていたとしても、「:penを一括割り当てできません」というエラーを防ぐために、ペン属性をペーパーモデルに追加する必要がありました。

現在、「不明な属性:ペン」エラーが発生しています。これは、作成アクションの2行目を指し示しています。私はそれを理解することはできません。

基本的に、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 に答える