Controller类中session和params的区别

2024-01-22

我正在查看购物车的 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(使用前将#替换为@)

Controller类中session和params的区别 的相关文章

  • Rails 4 ExecJS::Listings#index 中的程序错误

    将 JavaScript 添加到我的网络应用程序后 我现在收到以下错误 ExecJS ProgramError in Listings index stdin 16 5 error unexpected else else in Users
  • Rails 3.1 使用 app/assets/images/subdirectory 下的图像

    在我的 Rails 3 1 应用程序中 我将图像存储在app assets images jquery ui 我不知道如何在 CSS 中访问这些 assets image name png and assets jquery ui imag
  • 如何设置“attr_accessible”以便不允许使用 Ruby on Rails 访问模型的任何字段?

    如果在模型文件中我只有以下代码 class Users lt ActiveRecord Base end 这意味着什么 与模型相关的所有属性是否均可访问 我如何设置 attr accessible 以便not允许访问any领域的for那个型
  • Rails Partial (Rails 3, HAML) 任意慢

    我使用的是 Rails 3 0 1 HAML 0 3 22 和 Mongrel 1 1 5 MongoMapper 不是 AR 我正在渲染一个列表 每个列表项都是它自己的部分 每次页面渲染其中一个列表项部分时 渲染时间都会延长近 100 倍
  • Rails 3.0.0.beta 和 Facebooker:还有其他人看到以下内容吗?

    我的 Rails 服务器在安装 facebooker 插件后似乎崩溃了 任何有关解决此问题的建议都会很棒 我正在使用 Rails 3 0 0 beta 和 facebooker 以下是我看到的步骤和错误 rails v Rails 3 0
  • 从 ActiveRecord 获取表名

    I used ActiveRecord Base set table name在动态创建的 ActiveRecord 类上设置我的表名称 现在我需要知道稍后如何获得该值 api 文档没有提及如何执行此操作 另外 我无法从 ActiveRec
  • 如何使用Factory Girl生成回形针附件?

    我有一个包含许多图像的模型 Person 其中图像有一个称为数据的回形针附件字段 下面显示了缩写版本 class Person has many images end class Image has attached file data b
  • Rails f.check_box 设置选中/未选中值

    所以我在 Rails 中得到了一个带有复选框的表单助手 我希望该复选框在选中或取消选中时具有 thatvalue 或 thisvalue 值 我还没有找到如何设置它的地方 f check box field 我发现了类似的东西 但它不起作用
  • 回形针如何更改基本名称(文件名)?

    我正在尝试更改照片的基本名称 文件名 在我的模型中我有 attr accessor image url basename has attached file image styles gt original gt 300x250 gt pn
  • 如何在 Rails 6 中禁用 TurboLinks?

    所以我面临这个问题 我的服务器实际上从客户端的请求中检索了正确的数据 并将这些数据发送到浏览器 我可以清楚地看到它可用于浏览器 CTRL SHIFT C gt Network gt my request 但是 浏览器不会刷新 所以我现在看到
  • Rails 中的并行方法

    我的 Rails Web 应用程序有数十种方法 从调用 API 到处理查询结果 这些方法具有以下结构 def method one batch query API process data end def method nth batch
  • Ruby on Rails 最酷的功能是什么,为什么选择它? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我问这个问题之前 我浏览了 SO 上 Ruby on Rails 的搜索结果 找不到太多 但以下 在此页面上找到 https stackove
  • Rails:渲染不起作用,仍然出现“模板丢失”

    我目前正在学习 Rails 指南 我完成了这些步骤 但仍然遇到错误 我的 Ruby 版本是ruby 2 1 1p76Rails 版本是4 0 4 按照指南的指示 我创建了一个Article Controller class Articles
  • Eventmachine start_tcp_server 无接受器 - 端口正在使用或需要 root 权限(运行时错误)

    我已经 3 天无法运行本地服务器了 重新启动我的计算机没有帮助 有几次 在反复尝试大约 40 50 次之后 它随机地起作用了 我不明白为什么 我尝试过一次不同的端口并且有效 但从那以后 没有端口有效 每次我尝试运行我的 Rails 服务器时
  • Rails:关于产量

    我在a中看到了一些代码导轨 v2 3 app In layout car general html erb 这个视图是由 cars controller 中的方法调用的 我看到了代码 var some car new Object 有两个问
  • 如何从rails控制台将数据添加到数据库

    我有一个User model gt gt u User new gt
  • 在特定页面上执行 javascript 的正确“Rails”方式

    我试图在特定页面上运行 javascript 而我唯一的解决方案似乎是反模式 我有controller js内部生成的assets javascripts 我在用着gem jquery turbolinks 我的代码类似于以下内容 docu
  • 使用复选框过滤列表

    我有一个电影列表及其评级 在我的页面顶部 我有一个表单 其中提供了一个复选框列表 其中显示了每个可用的评级 G PG 13 等 一旦用户单击复选框并点击提交 我只想显示所选的电影 在我的索引方法中 我有一个名为的实例变量 filtered
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • Rails 4 的 mobile_fu

    我正在尝试将我的应用程序从 Rails 3 2 13 切换到 Rails 4 在此过程中 我遇到了一个主要障碍 我使用 gem mobile fu 来确定用户是否来自移动设备 该 gem 需要 Railties 3 2 13 但 Rails

随机推荐

  • 如何使用 BEM 方法构建自适应网页的 css?

    对于固定布局使用 BEM 很容易 带有媒体查询的自适应网页的 CSS 样式结构是怎样的 html 示例 div class t news div class t news post b post div class b post title
  • 按钮setBackgroundColor无高亮效果

    当我创建一个按钮时 Button myButton new Button this myButton setText Click Me 它创建一个按钮 单击该按钮时 该按钮会变成 橙色 以指示单击 添加到按钮时 button setBack
  • 使用 Qt 进行 C++0x 编程

    有人使用 C 0x 使用 Qt 进行过编程吗 效果如何 是否可以使用 C 0x 的所有优秀功能 您使用什么编译器和版本 我目前使用 gcc 4 6 并尝试所有 c 0x 功能 但我还没有对 Qt 做任何事情 Qt 几乎取代了所有标准库功能
  • 将语言字符转换为拉丁字母

    我尝试编写一个应用程序来学习外文字符 例如 如果您想学习日语 那么您必须记住所有平假名 片假名和汉字字母 例如 平假名 片假名本 学 汉字 例子 一些用户正在尝试学习日语 所以他必须学习 卡本 hon 含义 基础 书 这个 而且他还必须学习
  • SQL查询获取多次出现的值

    我需要查询数据库以显示表中姓氏出现超过 3 次的记录 示例 在我的学生表中 有 3 个姓氏为 Smith 的人 4 个姓氏为 Johnson 1 个姓氏为 Potter 我的查询应该显示姓氏为 Smith 和 Johnson 的记录 因为这
  • 在 matlab 中直观地将数据分为两类

    我有两个数据簇 每个簇都有 x y 坐标 和一个知道其类型的值 1 class1 2 class 2 我已经绘制了这些数据 但我想用边界 视觉上 分割这些类 做这样的事情的功能是什么 我尝试了轮廓 但没有帮助 考虑一下这个分类 http e
  • 不要在 Apache access.log 中记录某些请求

    我最近用自托管分析工具 Piwik 取代了 Google Analytics 这意味着每次有人连接我的网站http www mywebsite com http www mywebsite com 在客户端上执行 Javascript 跟踪
  • Python:获取可调用函数参数的名称

    如何获取作为参数传递给另一个函数的可调用函数的字符串表示形式 def foo print This is my callback function def bar callback None print something bar foo
  • C++ 中位字段的特征

    Reading https en cppreference com w cpp language bit field https en cppreference com w cpp language bit field 下列结论正确吗 相邻
  • 使 git pull (rebase) 默认仅从当前下游分支拉取

    我正在使用我发现的方法默认情况下拉 rebase http d strelau net post 47338904 git pull rebase by default进行 git pull 时 现在我想让 git pull 默认情况下仅拉
  • 获取房产指南

    这是上下文 我正在尝试为 经过身份验证的用户 组设置一堆属性 为此 我编写了以下脚本 GETTING AUTHENTICATED USERS SID sid1 S 1 5 11 objSID1 New Object System Secur
  • @ImportAutoConfiguration 和 @Import 有什么区别

    是不是真的org springframework boot autoconfigure ImportAutoConfiguration是改进的替代品org springframework context annotation Import因
  • 中央流光按钮

    如何使用 Streamlit 将按钮居中以使该按钮仍然可单击 这是返回随机数的按钮的一个小示例 import streamlit as st import numpy as np if st button Click rand np ran
  • 运行简单后台任务的最简洁方法?

    我已经看到至少五种模式 通过它们您可以在工作线程中运行一些代码 最简单 new Thread new Runnable public void run start 我们可以延长AsyncTask 我们有AsyncTaskLoader和别的L
  • 通过 COM 从 Ruby 调用 C# .dll

    我正在尝试在 Ruby 代码中调用 C 中的一些方法 首先 我在 Visual Studio 2008 中创建一个 dll 我在构建时注册 COM 互操作 为了测试这个新过程 我用 C 创建了一个简单的 DivideTwo 小方法 publ
  • SVG 的 PHP CSS 控制

    我正在尝试使用 CSS 来控制 svg 文件的颜色 我使用 html 来调用 svg 我页面上的颜色由 php 控制 其他所有内容都在 php 中 我确信我一定错过了一个步骤 因为我无法获取颜色 php 页面来控制 svg div clas
  • 如何从 Golang 的 Slice 中删除元素

    fmt Println Enter position to delete fmt Scanln pos new arr make int len arr 1 k 0 for i 0 i lt len arr 1 if i pos new a
  • 如何获取DNS中的TTL(Time To Live)?

    我想监控 DNS 地址 我需要得到TTL 生存时间 告诉我 DNS 记录何时到期 C 中如何获取TTL Net 示例代码位于C NET DNS 查询组件 http www codeproject com Articles 12072 C N
  • 在 Unix 中删除 ANSI 颜色转义的最佳方法

    我有一个 perl 程序 它用颜色打印输出 如果我重定向文件中的输出并在 vi 中打开它 我会看到颜色特殊字符 像这样的东西 31 43mAnd this is red on yellow too 0m 从输出文件中删除此颜色字符的最佳方法
  • Controller类中session和params的区别

    我正在查看购物车的 Rails 示例 在 ApplicationController 类中我看到如下代码 class ApplicationController lt ActionController Base protect from f