Devies – 登录后使用’POST’请求路由到行动
在我的Rails应用程序中,我使用Devise进行用户身份validation。 我试图设置它,以便控制器的create
操作有一个before_action :authenticate_user!
filter,但我遇到了一个问题 – Devise after_sign_in_path_for
控制器操作的默认行为似乎只能重定向到带有’get’动词的路由,但create
action依赖于’post’。 如何设置它以便重定向指向正确的操作?
的routes.rb
resources :posts, only: [:index, :new, :create]
posts_controller.rb
class PostsController [:create] def new @post = Post.new end def create @post = current_user.posts.new(post_params) @post.save redirect_to posts_summary_path end end
sessions_controller.rb
def after_sign_in_path_for(resource) request.env['omniauth.origin'] || stored_location_for(resource) || posts_path end
从我的佣金路线
posts GET /posts(.:format) posts#index POST /posts(.:format) posts#create
因此,要求用户在new
页面上提交表单后登录,但不是在登录后重定向到并完成create
操作,Devise将用户路由到index
视图。 如果我删除index
路由,我得到错误No route matches [GET] "/reports"
这是真的,但我试图路由到[POST] "reports"
,而不是[GET]
。
有没有办法可以指明这应该是一个post,而不是一个get?