到目前为止,我已阅读了几个主题并没有读过任何内容。我试图将一种形式嵌套在另一种形式中。我得到了无法分配受保护属性的错误。 \
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
无法批量分配受保护的属性: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
答案 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