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"}