我正在阅读 Agile Web Dev w/Rails 书(第 4 版),但我完全陷入困境……我在 Mac OSX 上运行 Rails 3.2.3。我在任务 D-3:添加一个按钮.... 它从测试开始:功能在本章末尾不起作用...它给了我一个错误说:
Can't Mass assign protected attributes: product
我遵循了这里给出的建议:http ://forums.pragprog.com/forums/148/topics/10565
并将我在 Line_Items_Controller 中的代码行更改为
@line_item = @cart.line_items.build
@line_item.product = product
这是我当前的 Line_Items_Controller 创建方法的样子:
# POST /line_items
def create
@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.line_items.build
@line_item.product = product
respond_to do |format|
if @line_item.save
format.html { redirect_to(@line_item.cart,
:notice => 'Line item was successfully created.') }
format.xml { render :xml => @line_item,
:status => :created, :location => @line_item }
else
format.html { render :action => "new" }
format.xml { render :xml => @line_item.errors,
:status => :unprocessable_entity }
end
end
end
现在我收到了这个奇怪的信息:
NoMethodError in LineItemsController#create undefined method `product=' for <LineItem:0x000001024f7fb0>
这是我的 LineItem 模型
class LineItem < ActiveRecord::Base
attr_accessible :cart_id, :product_id, :product
end
我现在不确定该怎么做,因为我是一个完全的 Rails (& Ruby) 新手。谁能指出我正确的方向?