我正在查看购物车的 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|
所以这里使用的是购物车.find(参数[:id])
但我不明白为什么我们在 AppController 中使用 session 来传递参数,但在 CartController 中使用普通参数,我们可以使用 swithc 使用它们吗?或者 Rails 是如何工作的并且会话总是发送到 AppController?如果有人可以更详细地解释这一点,那就太好了
params
存在于 url 或表单的帖子正文中,因此一旦进行查询它就会消失。
会话在多个请求之间持续存在(信息通常存储在 cookie 中,但这取决于您的配置)。
简而言之:
- params:仅一个请求(创建一个对象,访问一个特定页面)
- 会话:要保留的信息(购物车、登录用户..)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)