回到浏览器后,请删除会话

时间:2017-05-24 21:46:51

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个问题。我的食谱索引页面中有一份食谱列表。我们的想法是,当您单击特定配方时,它会将您带到显示页面并将配方ID存储在会话中。会话中id的存在/不存在是程序工作流程的组成部分。创建子配方或重新访问索引页时,会话将被清除。但是,当您在不创建资源的情况下单击浏览器(to recipes/index)时,配方ID仍保留在会话中,您不再需要会话中的值。这会导致程序遇到错误。如何单击后退按钮也会删除会话

2 个答案:

答案 0 :(得分:0)

两种可能的解决方案,包含您提供的信息:

  1. 在索引上设置before_action以清除会话中的食谱ID。
  2. 通过params将配方ID传递给show页面,然后将其设置为一个实例变量,以便在视图中使用。
  3. 如果可能,我会选择后者。更多信息可以提供更好的答案。

答案 1 :(得分:0)

所以我通过检查request.referer是否是索引页面的url来解决它。如果是,那么我清除会话。

继续前进,您可以通过检查标题密钥(request.headers["HTTP_REFERER"])(也可以通过调用request.referer获得)来处理此类情况。这种方式无论您使用哪种方法进入页面,都可以始终保持其保真度。