0

我不明白“line_items_controller.rb”中的第 5 行:我注意到 Rails 3.1 的代码没有这样的行,而在 Rails 3.2 的代码中有这样的行。从 Java 世界来看,很难说这里使用了什么样的魔法 ruby​​ :( 我一直在理解 Rails 文档。

例如 button_to 有签名button_to(name, options = {}, html_options = {})

但是在代码中,您可以添加参数,例如

<%= button_to 'Empty cart', @cart, :method => :delete, :confirm => 'Are you sure?' %>

我想@cart 不应该在那里......

def create
    @cart = current_cart #this is a function method
    product = Product.find(params[:product_id])
    @line_item = @cart.add_product(product.id)
    @line_item.product = product

    respond_to do |format|
      if @line_item.save
        format.html { redirect_to @line_item.cart }
        format.json { render json: @line_item,
          status: :created, location: @line_item }
      else
        format.html { render action: "new" }
        format.json { render json: @line_item.errors,
          status: :unprocessable_entity }
      end
    end
end

此处项目的完整源代码: https ://github.com/ilovejs/depot_i/blob/master/app/controllers/line_items_controller.rb

4

2 回答 2

1

似乎@cart.add_product(product.id)如果要向 中添加产品@cart,并且@line_item.product = product似乎也在做同样的事情

没有看到模型的代码很难说Cart,但是我认为

删除@line_item.product = product线也应该没有问题

于 2013-02-21T04:08:06.320 回答
1

替换:

@line_item = @cart.add_product(product.id)
@line_item.product = product

@cart.add_product(product.id)

然后

@line_item

下面的引用可能应该是@cart。

于 2013-02-21T04:14:44.280 回答