嵌套形式 - 无法批量分配受保护的属性:

时间:2013-04-17 01:49:15

标签: ruby-on-rails nested-forms

到目前为止,我已阅读了几个主题并没有读过任何内容。我试图将一种形式嵌套在另一种形式中。我得到了无法分配受保护属性的错误。 \

app / controllers / projects_controller.rb:46:在new' app/controllers/projects_controller.rb:46:in创建'

Projects_controller.rb

 def create
  @project = Project.new(params[:project])


respond_to do |format|
  if @project.save
    format.html { redirect_to @project, notice: 'Project was successfully created.' }
    format.json { render json: @project, status: :created, location: @project }
  else
    format.html { render action: "new" }
    format.json { render json: @project.errors, status: :unprocessable_entity }
  end
 end
end

project.rb

  WF::Application.routes.draw do
    resources :line_items


    resources :projects do
      resources :line_items
    end

   devise_for :users
   get 'about' => 'pages#about'
   get 'Production' => 'projects#index'
   root :to => 'pages#home'
end

这是错误...
    在ProjectsController #create

中的ActiveModel :: MassAssignmentSecurity :: Error

无法批量分配受保护的属性:line_item

这是我的项目模型

class Project < ActiveRecord::Base
    attr_accessible :quantity
    # may be unnessary
    attr_accessible :line_items_attributes


    belongs_to :user
    has_many :line_items
    accepts_nested_attributes_for :line_items, :allow_destroy => true
end

2 个答案:

答案 0 :(得分:0)

Rails试图保护您不会意外地分配您不想要的值。

你可以告诉Rails以这种方式分配哪些值是可以的:

attr_accessible :value1, :value2

如果您将该行添加到Project 模型的顶部(将:value1:value2替换为您的列的实际名称),则应该允许你做你正在尝试的事情。

有关详情,请点击此处the docs

答案 1 :(得分:0)

假设您尝试通过项目模型创建订单项,则需要确保Project模型中包含以下行:

# project.rb
Class Project < ActiveRecord::Base
  attr_accessible :line_items_attributes

  accepts_nested_attributes_for :line_items

  ...
end