【问题标题】:Devise_invitable : wrong flash upon successfull invitation editDevise_invitable : 成功邀请编辑后的错误闪烁
【发布时间】:2014-06-10 14:10:26
【问题描述】:

宝石文件:

gem 'devise',           '>= 2.0.0'
gem 'devise_invitable', '~> 1.3.4'

访问/invitation/accept.XX?invitation_token=XXXXXXXX的用户使用此表单成功设置了密码:

<%= form_for resource, :as => resource_name, :url => invitation_path(resource_name), :html => { :method => :put } do |f| %>
  <%= devise_error_messages! %>
  <%= f.hidden_field :invitation_token %>

  <p><%= f.label :password %><br />
  <%= f.password_field :password %></p>

  <p><%= f.label :password_confirmation %><br />
  <%= f.password_field :password_confirmation %></p>

  <p><%= f.submit t("devise.invitations.edit.submit_button"), class:'btn btn-inverse' %></p>
<% end %>

成功后,他们会被登录并重定向到预期的页面,但他们会收到位于以下位置的 flash 消息:

en:  
 devise:  
  invitations:  
   invitation_token_invalid: 'The invitation token provided is not valid!'

知道为什么会这样吗?

【问题讨论】:

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


    【解决方案1】:

    我遇到了同样的问题,不确定是不是您的问题的原因。我在登录后修改了设计重定向,这导致我的应用程序再次尝试接受邀请。这会导致错误:“提供的邀请令牌无效!”因为 DeviseInvitable 在用户第一次成功接受邀请后删除了invitation_token。

    我的问题代码是:

    def after_sign_in_path_for(resource_or_scoped)
      session[:previous_url] || root_path
    end
    

    【讨论】:

      【解决方案2】:

      @Steve 是正确的,因为该行也是导致我出现此错误的原因。特别是它的session[:previous_url]

      这是为我解决问题的解决方法。

      routes.rb

      devise_for :users, controllers: { invitations: 'users/invitations' }
      

      Users::InvitationsController

      module Users
        class InvitationsController < Devise::InvitationsController
          def after_accept_path_for(resource)
            root_path # you can define this yourself. Just don't use session[:previous_url]
          end
        end
      end
      

      这里的默认行为基本上是使用after_sign_in_path_for 作为资源接受邀请后的路径。上述解决方案只是覆盖了该默认行为。您可以查看docs了解更多信息。

      【讨论】:

      • 这正是我的问题!我整天都在上网。非常感谢你成为你。此外,将其包含在 devise_invitable 的 gem 文档中会很有帮助,是吗?
      • 很高兴您能够解决您的问题。我相信这已经在third paragraph under "Integration in a Rails application" 的文档中了。
      • 现在我知道它是什么,我同意。把具体的错误放在那里会更容易理解。
      猜你喜欢
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 2014-10-31
      • 1970-01-01
      相关资源
      最近更新 更多