我必须将笔属性添加到纸模型中以停止错误“无法批量分配:笔”,甚至认为我有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"}
答案 0 :(得分:0)
您的单数/复数命名似乎有一些小的差异。
我认为您需要调整以下内容:
<%= f.fields_for :pens, @pen do |h| %>
可能:
attr_accessible :pens_attributes
以及(可能):
params[:pens]
希望这有帮助,祝你好运!