Ruby on Rails:如何为变量分配硬值?

时间:2012-07-09 10:56:53

标签: ruby ruby-on-rails-3 variables routing variable-assignment

我正在使用多个重定向,我想从A-> B-> C-> A重定向。

所以在B中,我将路径A保存为

@previouspage = request.referer

所以@previouspage = A此时,但是当我在C中调用@previouspage时,它不会带来保存在B中的硬值,而是找到它自己的相对request.referer,即B.

所以在C中,@ previouspage = B(因为我认为Ruby中的变量是软链接)

我如何只保存request.referer在B点的值,然后将该URL保存到我以后可以访问的变量中?

3 个答案:

答案 0 :(得分:3)

HTTP是无状态协议:请求之间不会记住变量。如果要在请求之间保存状态,则可以使用会话。在Rails中,它是这样完成的:

在B:

session[:page_a] = request.referer

在C:

@next_page = session[:page_a]

Rails Security Guide从会话及其漏洞开始。你可能想看一下。

答案 1 :(得分:2)

请求之间不保留Rails变量。如果您想保存一些数据,您应该:

  • 将其保存在(会话)Cookie
  • 将其保存在数据库中
  • 从你的袖子中拉出一些技巧并将引用作为参数或类似的东西传递但不建议使用它。

答案 2 :(得分:2)

使这项工作需要三件事

  • 使用会话:sessions [:original_page] = request.referrer
  • 记录会话在登录后刷新(检查是否为零)
  • 记住在控制器中使用会话后立即设置会话[:original_page] = nil。