0

我不理解以下应用程序session之间的区别。params

用户提交一个新的电影表单。关联的控制器如何访问电影的标题?

  1. session['title']
  2. session.title
  3. params['title']
  4. params.title
  5. 上述所有的

基于 StackOverflow 答案在 Controller 类中 session 和 params 之间的差异

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

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

简而言之:

  • 参数:仅一个请求(创建一个对象,访问一个特定页面)
  • 会话:要保留的信息(购物车、登录用户..)

我在测验中选择了(1)并得到了错误的答案。session ['title']我选择(1)是因为我认为它涉及访问必须持久的信息。

我是否误解了这个问题,也许这更多地属于“仅一个请求”,所以答案应该是(3)params['title']

4

2 回答 2

4

要尝试在此测验的上下文中而不是仅在代码上下文中回答您的问题,请考虑它在哪里说:

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

现在考虑问题本身说:

用户提交了一个新的电影表单。关联的控制器如何访问电影的标题?

所以问题是说用户通过填写​​表单进行交互,然后post将其发送到服务器。这正是您的笔记中提到的“表单的帖子正文” 。

所以正确答案是3)params['title']

现在,一旦访问了这些数据,就可以将其放入会话中,但这是由开发人员来做或决定的,这实际上不在此处讨论的范围内。

您还知道,在这个问题的上下文中,会话不是使用的,因为您的问题仅涉及一个请求:发送表单。如果您的问题涉及从表单发送的数据,这些数据必须在更多请求中持续存在(例如多页表单),那么会话可能会发挥作用。

于 2013-07-31T21:18:48.540 回答
0

在访问数据之前,您需要放置它。在默认的 rails 生成的表单中,所有数据都在 params 中的一个请求中发送。如果您有指向 User#create 操作的表单并且有“名称”输入,那么您将在 User#create 操作中有 params['name']。

会话是另一回事。在标准生成的 rails 脚手架中很难找到会话。您可以将会话作为哈希访问。session['name'] 将在请求之间存储名称。阅读更多

因此,为一个请求生成参数 - 将数据从用户传输到服务器,会话不用于传输数据,而是用于存储数据。

于 2013-07-31T19:11:17.543 回答