0

Railsを学んでいるときに、SamRubyの本でこの例を見つけました。

app / controllers / line_items_controller.rb

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
            # this following line is strange for me 
            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

redirect_to(@line_item.cart,...)単に置き換えられたセクションではないのはなぜredirect_to(@cart,...)ですか?

実際、@cartはアクセス可能なインスタンス変数です。

@line_itemこの例では、カートを取得するために使用する必要がありますか?

4

2 に答える 2

1

この例には、ある種のネストされたルートが含まれていますか?例を実行するだけで、redirect_to @cartまだ機能するはずです。

やってみよう。しかし、それは私の理解からうまくいくはずです。たぶん、作者は、リダイレクト先のカートでもう少し表現力豊かになりたいと思っていました。

于 2012-06-26T13:09:55.233 に答える
1

これらは、著者が伝えようとしていると想定しなければならない時代です。

"このline_itemを保存した後、このline_itemがあるカートに移動します" =>読みやすさ。

良いコードが提供すべきものは2つあります。

  1. 読みやすさ。
  2. 将来の変更のための部屋。

私は彼らの必要性を経験、現実から悟りました。(本からではありません)

最適化は、適切な出力を取得した後に検討できます。

私が間違っている場合は私を訂正してください。

于 2012-06-26T14:14:07.850 に答える