我在rails上有简单的应用程序。我需要发一些文章。我的申请已经设计了授权。在posts_controller.rb before_filter :authenticate_user!, :except => [:show, :index]
中。
索引页面为link_to
,button_to
为new_post_path
。如果我没有登录并尝试link_to
,我会重定向到/sign_in
页面。如果我按button_to
我在/posts/new
页面上重定向,我看到路由错误No route matches [POST] "/posts/new"
。
请告诉我,出了什么问题?
答案 0 :(得分:1)
听起来您的应用程序的行为完全符合预期。您有before_filter
表示需要对用户进行身份验证才能创建新的Post
。因此,当您尝试GET /posts/new
时,您将被重定向到登录页面。
假设您使用的是资源路线,/posts/new
页面只会在GET
上提供,因此您尝试POST
会导致错误。
如果您希望未经身份验证的用户能够创建帖子,请将之前的过滤器更改为
before_filter :authenticated_user!, :except => [:show, :index, :new, :create]