'button_to'和'link_to'与设计重定向

时间:2011-11-10 10:30:17

标签: ruby-on-rails devise

我在rails上有简单的应用程序。我需要发一些文章。我的申请已经设计了授权。在posts_controller.rb before_filter :authenticate_user!, :except => [:show, :index]中。 索引页面为link_tobutton_tonew_post_path。如果我没有登录并尝试link_to,我会重定向到/sign_in页面。如果我按button_to我在/posts/new页面上重定向,我看到路由错误No route matches [POST] "/posts/new"。 请告诉我,出了什么问题?

1 个答案:

答案 0 :(得分:1)

听起来您的应用程序的行为完全符合预期。您有before_filter表示需要对用户进行身份验证才能创建新的Post。因此,当您尝试GET /posts/new时,您将被重定向到登录页面。

假设您使用的是资源路线,/posts/new页面只会在GET上提供,因此您尝试POST会导致错误。

如果您希望未经身份验证的用户能够创建帖子,请将之前的过滤器更改为

before_filter :authenticated_user!, :except => [:show, :index, :new, :create]