0

「line_items_controller.rb」の5行目がわかりません。Rails3.1のコードにはそのような行がありませんが、Rails3.2のコードにはそのような行があります。Javaの世界から、ここでどのような魔法のルビーが使用されているかを判断するのは難しいです:(私はRailsドキュメントの理解に固執していました。

たとえば、button_toにはsigniture 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

it seems like @cart.add_product(product.id)if to add a product to the @cart, and @line_item.product = product is also seems like doing the same thing

its little hard to tell without seeing the code of Cart model, however I think

removing the @line_item.product = product line should also work without a problem

于 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 に答える