Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails条件重定向_Ruby On Rails_Redirect - Fatal编程技术网

Ruby on rails Rails条件重定向

Ruby on rails Rails条件重定向,ruby-on-rails,redirect,Ruby On Rails,Redirect,我正在尝试为新用户设置一个重定向到帮助页面的方式,类似于当新用户尝试提问新问题时堆栈溢出显示如何提问页面的方式 PostsController def new if current_user.posts_count < 5 redirect_to newbieadvice_path else @question = Question.new end end def新建 如果当前用户发布数量小于5 重定向到newbieadvice\u

我正在尝试为新用户设置一个重定向到帮助页面的方式,类似于当新用户尝试提问新问题时堆栈溢出显示如何提问页面的方式

PostsController

  def new
    if current_user.posts_count < 5
      redirect_to newbieadvice_path
    else
      @question = Question.new
    end
  end
def新建
如果当前用户发布数量小于5
重定向到newbieadvice\u路径
其他的
@新问题
结束
结束
问题是,与堆栈溢出类似,我在“帮助”页面上有一个“转到新帖子”按钮,它会返回到“新帖子”,然后它会返回到“帮助”页面,因为当前的“user.posts”计数仍然小于5

一旦用户进入帮助页面,如何绕过重定向?

从我读到的内容来看,我有两种方法可以做到:

1。如果在视图中,请使用链接到

<%= link_to_if current_user.posts_count < 5 ... %>

不幸的是,用户可以通过直接键入url绕过帮助页面

2。在数据库中使用建议计数器缓存

if current_user.advices_count < 5
如果当前用户数量<5
并在用户访问帮助页面时增加计数。我不确定这是不是最好的办法

所以我需要一种方法 1.将新用户重定向到帮助页面 2.阅读“帮助”页面后,用户可以继续返回“新”帖子,无需重定向

有什么想法吗

  • 在帮助页面中生成一个随机令牌,并将该令牌作为参数添加到“继续发布新帖子”链接中,然后在您的帖子控制器中,对该令牌进行验证

  • 检查HTTP请求头request.env['HTTP_REFERER']的“HTTP_REFERER”值,查看用户是否来自帮助页面

  • 在帮助页面中生成一个随机令牌,并将该令牌作为参数添加到“继续发布新帖子”链接中,然后在您的帖子控制器中,对该令牌进行验证

  • 检查HTTP请求头request.env['HTTP_REFERER']的“HTTP_REFERER”值,查看用户是否来自帮助页面

  • 在帮助页面中生成一个随机令牌,并将该令牌作为参数添加到“继续发布新帖子”链接中,然后在您的帖子控制器中,对该令牌进行验证

  • 检查HTTP请求头request.env['HTTP_REFERER']的“HTTP_REFERER”值,查看用户是否来自帮助页面

  • 在帮助页面中生成一个随机令牌,并将该令牌作为参数添加到“继续发布新帖子”链接中,然后在您的帖子控制器中,对该令牌进行验证

  • 检查HTTP请求头request.env['HTTP_REFERER']的“HTTP_REFERER”值,查看用户是否来自帮助页面


  • 使用
    request.referer
    。因此,在控制器中更改如下:

    if URI(request.referer).path != newbieadvice_path && current_user.posts_count < 5
    
    if-URI(request.referer).path!=newbieadvice\u路径和当前用户。帖子数<5
    
    使用
    请求。参考
    。因此,在控制器中更改如下:

    if URI(request.referer).path != newbieadvice_path && current_user.posts_count < 5
    
    if-URI(request.referer).path!=newbieadvice\u路径和当前用户。帖子数<5
    
    使用
    请求。参考
    。因此,在控制器中更改如下:

    if URI(request.referer).path != newbieadvice_path && current_user.posts_count < 5
    
    if-URI(request.referer).path!=newbieadvice\u路径和当前用户。帖子数<5
    
    使用
    请求。参考
    。因此,在控制器中更改如下:

    if URI(request.referer).path != newbieadvice_path && current_user.posts_count < 5
    
    if-URI(request.referer).path!=newbieadvice\u路径和当前用户。帖子数<5
    
    我知道这一定很简单。非常感谢你的快速回复,我知道这一定很简单。非常感谢你的快速回复,我知道这一定很简单。非常感谢你的快速回复,我知道这一定很简单。非常感谢您的快速回复,这样也可以工作,但是Zakwan的代码更简单。许多感谢也可以工作,但扎克文的代码更简单。许多感谢也可以工作,但扎克文的代码更简单。许多感谢也可以工作,但扎克文的代码更简单。非常感谢