【问题标题】:Nested form can't mass assign, create action嵌套表单无法批量分配,创建操作
【发布时间】:2012-10-13 06:40:35
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您的单数/复数命名似乎有些细微差异。

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

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

    而且可能:

    attr_accessible :pens_attributes
    

    以及(可能):

     params[:pens]
    

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

    【讨论】:

    • 谢谢,这有助于解决问题。现在当我尝试它时,它告诉我笔属性不能为空。有什么想法吗?
    • 您是否确定在您的控制器中将所有对 params[:pen] 的引用更改为 params[:pens]? (假设这是您必须做出的调整之一,在视图中......)
    猜你喜欢
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    相关资源
    最近更新 更多