【问题标题】:Rails Devise Invitable redirect after send invititaion发送邀请后 Rails Devise Invitable 重定向
【发布时间】:2012-10-04 05:10:55
【问题描述】:

我已安装并运行了 invitable。试图弄清楚在用户发出邀请后如何重定向用户。现在它正在将我重定向到根目录。我以为你可以在下面的方法中设置你的自定义路径,但它不起作用。如果有人知道在发送邀请后在哪里自定义路径,请提前致谢。

 def after_invite_path_for(resource)
    new_profile_path
  end

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 devise


    【解决方案1】:

    我偶然发现了您的问题,因为我遇到了同样的问题。据我所知,您覆盖 after_invite_path_for 的预期方法是覆盖 Devise::InvitationsController。

    class Users::InvitationsController < Devise::InvitationsController
      def after_invite_path_for(resource)
        new_profile_path
      end
    end
    

    routes.rb

    devise_for :users, :controllers => { :invitations => "users/invitations" }
    

    如果 devise invitable 能够像 devise proper 一样工作,并且您可以在应用程序控制器中覆盖其后邀请/接受路径,那就太好了。我修改了 devise_invitable 以这种方式工作并提交了一个拉取请求。我不确定它是否会被接受,但你可以看看这里:https://github.com/scambra/devise_invitable/pull/240

    如果该功能被接受,您可以通过将其放入初始化程序中来修补您当前版本的 invitable 以尊重应用程序控制器中的邀请/接受后路径的定义:

    #make invitable's path functions overridable in application controller
    [:after_invite_path_for, :after_accept_path_for].each do |method|
      Devise::InvitationsController.send(:remove_method, method) if ApplicationController.method_defined? method
    end
    

    【讨论】:

    • 我在上面的补丁中使用 devise_invitable,但它似乎仍然不适用于 ApplicationController 中的覆盖。在Users::InvitationsController 中覆盖after_invite_path_for 有效,但是资源不正确。我要求作者重新打开这个问题。 github.com/scambra/devise_invitable/pull/…
    • 覆盖对我有用,但参数中的资源最终成为 current_user 而不是受邀用户。我能够通过将用户作为实例变量存储在控制器控制器操作中来访问用户,然后在 after_invite_path_for 中引用该变量
    【解决方案2】:

    不确定这是一件好事......还是更糟糕的事情,但你可以说:

      def after_invite_path_for(resource)
        new_profile_path
      end
    

    在您的应用程序控制器中...似乎工作正常!

    【讨论】:

    • 有效。确认的。并且您不必编辑路线和创建邀请控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多