gpt4 book ai didi

ruby-on-rails - Controller 类中的 session 和 params 之间的区别

转载 作者:行者123 更新时间:2023-12-03 16:00:37 25 4
gpt4 key购买 nike

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

最佳答案

params存在于 url 或表单的帖子正文中,因此一旦进行查询,它就会消失。

session 在多个请求之间持续存在(信息通常存储在 cookie 中,但这取决于您的配置)。

简而言之:

  • 参数:仅一个请求(创建一个对象,访问一个特定页面)
  • session :要保留的信息(购物车、登录的用户..)
  • 关于ruby-on-rails - Controller 类中的 session 和 params 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14442037/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com