首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >敏捷Web开发w/ Rails (4 e) Cart问题

敏捷Web开发w/ Rails (4 e) Cart问题
EN

Stack Overflow用户
提问于 2012-05-08 23:59:27
回答 4查看 1.9K关注 0票数 0

我正在阅读敏捷网络开发/ Rails书(第4版),我完全被困住了.我在Mac上运行Rails 3.2.3。I在任务D-3:添加按钮.它以测试开始:功能函数在本章末尾不起作用.它给了我一个错误,说:

代码语言:javascript
复制
Can't Mass assign protected attributes: product

我遵循了这里的建议:http://forums.pragprog.com/forums/148/topics/10565

并将Line_Items_Controller中的代码行更改为

代码语言:javascript
复制
@line_item = @cart.line_items.build
@line_item.product = product 

下面是我当前的Line_Items_Controller创建方法的样子:

代码语言:javascript
复制
# 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

现在我收到了一个奇怪的信息:

代码语言:javascript
复制
NoMethodError in LineItemsController#create undefined method `product=' for   <LineItem:0x000001024f7fb0>

这是我的LineItem模型

代码语言:javascript
复制
   class LineItem < ActiveRecord::Base
  attr_accessible :cart_id, :product_id, :product
end

我现在并不确定该做什么,因为我是一个完整的Rails (& Ruby) newb。谁能给我指明正确的方向?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-09 15:50:53

将原来的代码@line_item = @cart.line_items.build(product: product)改为@line_item = @cart.line_items.build(:product_id => product.id) in line_items_controller.rb为我解决了这个问题。

票数 2
EN

Stack Overflow用户

发布于 2012-07-10 16:44:50

在我的例子中,有:product_id In LineItem attr_accessible:

代码语言:javascript
复制
attr_accessible :cart_id, :product_id

因此,我更改了:build的属性中的产品=>产品:product_id => product.id,它可以工作。

代码语言:javascript
复制
@line_item = @cart.line_items.build(:product_id => product.id)
票数 1
EN

Stack Overflow用户

发布于 2012-08-21 17:04:01

如果您想让书中的示例完全按照他们键入的方式工作,请转到models/line_item.rb并添加attr_accessible,如下所示;

代码语言:javascript
复制
attr_accessible :cart_id, :product_id, :product

恩乔伊。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10508158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档