Rails - before_action登录创建操作

时间:2016-06-24 16:47:34

标签: ruby-on-rails devise

暂时搁置这个问题,但是对问题有了更好的理解,我已将其重新发布 - 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 操作。

0 个答案:

没有答案