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?