我正在尝试为新用户设置重定向到帮助页面,类似于新用户尝试提出新问题时堆栈溢出呈现如何询问页面的方式。
PostsController
def new
if current_user.posts_count < 5
redirect_to newbieadvice_path
else
@question = Question.new
end
end
问题是,类似于Stack Overflow,我在帮助页面上有一个“继续发布新帖子”按钮,返回帖子#new,然后循环回到帮助页面,因为current_user.posts_count仍然是&lt; 5。
如果用户在帮助页面上,我该如何绕过重定向?
根据我的阅读,我有两种方法可以解决这个问题:
1。在视图中使用link_to_if
<%= link_to_if current_user.posts_count < 5 ... %>
不幸的是,通过直接输入网址,用户可以绕过帮助页面。
2。在数据库中使用建议计数器缓存
if current_user.advices_count < 5
并在用户访问帮助页面时增加计数。我不确定这是最好的方法。
所以我需要一种方法 1.将新用户重定向到帮助页面 2.阅读帮助页面后,用户可以返回帖子#new而不进行重定向
有什么想法吗?
答案 0 :(得分:2)
使用request.referer
。所以在你的控制器中改变如下:
if URI(request.referer).path != newbieadvice_path && current_user.posts_count < 5
答案 1 :(得分:1)
在帮助页面中生成一个随机令牌,并将此令牌作为参数添加到“前往新帖子”链接,然后在您的帖子控制器内部,对此令牌进行验证。
< / LI>检查http请求标头的“HTTP_REFERER”值,request.env ['HTTP_REFERER'],并查看用户是否来自帮助页面。