我正在查看购物车的 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])
但我不明白为什么我们使用 session 来传递 AppController 中的参数,但我们在 CartController 中使用普通参数,我们可以使用 swithc 使用它们吗?还是 Rails 是如何工作的并且总是会话转到 AppController?如果有人可以更详细地解释这一点,那就太好了