【问题标题】:Customize link of invitation sent by devise_invitable rails自定义 devise_invitable rails 发送的邀请链接
【发布时间】:2018-01-19 06:18:25
【问题描述】:

devise_invitable 发送的邮件包含如下邀请链接。 http://127.0.0.1:3000/users/invitation/accept?invitation_token=9gAJ9Jyf7TKk95ddUFxB

我想修改这个链接,如下所示。 http://127.0.0.1:3000/users/invitation/accept?invitation_token=9gAJ9Jyf7TKk95ddUFxB&language=en

有人知道解决方法吗?

【问题讨论】:

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


    【解决方案1】:

    您可以使用自己的东西自定义邮件视图

    使用它来生成设计邀请视图rails generate devise_invitable:views 有关查看的更多信息,请查看Link

    并自定义 app/views/devise/mailer/invitation_instruction.html.erb 以使您的东西正常工作。

    更新

    当您邀请用户时,它将调用Users::InvitationsControllercreate 操作,您也可以覆盖控制器,请参考Customize devise invitable Controller

    【讨论】:

    • 感谢快速响应!我通过在你教的文件中描述它来解决它,如下accept_invitation_url(@resource, :invitation_token => @token, :language => 'en')
    • 我还有一个要求。你能告诉我在邀请_instruction.html.erb 被渲染之前的流程吗?我想将上面示例中的“en”更改为变量。因此,我想在渲染这个视图文件之前知道正在运行的控制器。
    • @genkiohmori 我已经更新了答案,如果您想了解更多信息,请告诉我。
    • 感谢您的回复!我像这样修改了继承的 InvitationController#create ->super { |u| u.language = 'en' }。但是invitation_instruction.html.erb 中的@resource.language 是零。我用 binding.pry 遵循了这个过程。视图文件中使用的@资源在devise/mailers/helper.rb中初始化。但是我在图书馆,所以我不想编辑它。此外,在继承的invitations_controller.rb 中,我定义了一个与@resrouce 不同的实例变量@lang 并分配了“en”,但我无法在视图文件中引用@lang。有什么好的方法吗?
    • 实际上,我对国际化一无所知,所以我无法提出更好的方法。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多