暂时搁置这个问题,但是对问题有了更好的理解,我已将其重新发布 - Devies - route to action with 'POST' request after login
My Rails应用程序使用Devise进行用户身份验证,我正在尝试对其进行设置,以便我的控制器的create
操作需要成功登录。我几乎得到了这个工作,但是我遇到了一个小问题 - 在new
页面上填写了一个表单,然后要求用户登录,但是然后而不是继续{ {1}}操作(以及后续重定向到摘要页面),用户已登录,然后重新重定向到create
页面。这是代码......
posts_controller.rb
new
sessions_controller.rb
class PostsController < ApplicationController
before_action :authenticate_user!, :only => [: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
理想情况下,事件链将是def after_sign_in_path_for(resource)
request.env['omniauth.origin'] || stored_location_for(resource) || posts_path
end
- &gt; new
- &gt; login
- &gt; create
,而是我得到的是summary
- &gt; new
- &gt; login
- &gt; new
- &gt; create
。为什么session_controller.rb重定向到summary
操作而不是new
?贬低我的路线表明我的重定向目的地正确...
create
我曾尝试从路由中删除sessions_controller.rb,只是依赖于默认的Devise行为,但这会自动重定向到登录成功页面,并且不会触发posts POST /posts(.:format) posts#create
操作。