私は Rails book (第 4 版) を使用して Agile Web Dev に取り組んでいますが、完全に行き詰っています... Mac OSX で Rails 3.2.3 を実行しています。タスクD-3: ボタンの追加.... それは test:functionals が章の最後で機能しないことから始まりました... それは私に次のようなエラーを与えました:
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 create メソッドは次のようになります。
# 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)の初心者であるため、この時点で何をすべきかよくわかりません。誰かが私を正しい方向に向けることができますか?