2011-11-10 31 views
1

我在轨道上有简单的应用程序。我需要发布一些文章。我的应用程序已设计授权。在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"。 请告诉我,有什么不对?'button_to'和'link_to'重定向与设计

回答

1

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

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

如果你想未经身份验证的用户能够创建的帖子,改变你之前过滤器

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

是的,我明白。我问这个问题是错误的。我需要'button_to'表现为'link_to'。如果我没有登录并按'button_to',我被重定向到'sign_in'页面。它怎么样? – Eugene