4

ショッピング カートの Rails の例を見ていると、ApplicationController クラスに次のようなコードが表示されます。

class ApplicationController < ActionController::Base
  protect_from_forgery

  private

    def current_cart 
      Cart.find(session[:cart_id])
    rescue ActiveRecord::RecordNotFound
      cart = Cart.create
      session[:cart_id] = cart.id
      cart
    end
end

したがって、Cart.find(session[:cart_id])を使用しています

次に、carts_controller.rb と CartController クラスに移動すると、次のようなコードが表示されます。

 def update
    @cart = Cart.find(params[:id])

    respond_to do |format|

ここではCart.find(params[:id])を使用しています

しかし、AppController でパラメーターを渡すためにセッションを使用した理由がわかりませんが、CartController で通常のパラメーターを使用し、swithc でそれらを使用できますか? それともレールがどのように機能し、常にセッションがAppControllerに行くのですか? 誰かがこれをより詳細に説明できれば素晴らしいでしょう

4

1 に答える 1

10

paramsURLまたはフォームの投稿本文に存在するため、クエリが作成されるとすぐに消えます.

セッションは複数のリクエスト間で保持されます (情報は多くの場合 Cookie に保存されますが、これは構成によって異なります)。

要するに:

  • params: 1 つのリクエストのみ (1 つのオブジェクトの作成、1 つの特定のページへのアクセス)
  • セッション: 保持される情報 (カート、ログインしているユーザーなど)
于 2013-01-21T15:39:22.563 に答える