我正在查看购物车的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(会话[:cart_id])
然后我去了carts_controller.rb和CartController类,我看到这样的代码:
def update
@cart = Cart.find(params[:id])
respond_to do |format|
所以这里使用 Cart.find(params [:id])
但我无法理解为什么我们使用session在AppController中传递params但是我们在CartController中使用了普通的params并且我们可以使用swithc来使用它们吗?或者是rails如何工作并且会话总是进入AppController?如果有人可以更详细地解释这一点,那将是非常好的
答案 0 :(得分:9)
params
位于表单的网址或帖子正文中,因此只要查询完成就会消失。
会话在多个请求之间保持不变(信息通常存储在cookie中,但这取决于您的配置)。
简短: