devise_invitable
コントローラをオーバーライドしています。私の作成方法では、invitations_instructions
電子メールテンプレートに余分な値を渡したいと思います。例えば、グループ名の場合は誰でもこれで成功しています。もしそうなら、私にここでいくつかの手がかりを与えてください。私が試したものをdevise_invitable電子メールテンプレートに余分なインスタンス変数を渡す
...
私の私のUsers::InvitesController < Devise::InvitationsController
作成方法で
@group
は、電子メールテンプレートで定義されていません。
は...私の作成した後のように手動でメールを送ることで
self.resource = resource_class.invite!(params[resource_name], current_inviter, :skip_invitation => true)
::Devise.mailer.invitation_instructions(self.resource).deliver
を:skip_invitation => true
を追加しようとしましたが、私はドキュメントから正しく読んでいないよ何かがあるので、これは間違った数の引数を与えます。
UPDATE - 可能性のある解決策
唯一の方法は、このように見えますが、提供されるテンプレートを使用して、より良い方法がある場合、私は好奇心旺盛だし、私の/app/controller/users/InvitesController#create
にメーラー
を考案は(から継承しますUserMailer
は私の一般的な(標準)アクションメーラーであるとのようなものを行くInvitationsController
)
self.resource = resource_class.invite!(params[resource_name], current_inviter) do |u|
u.skip_invitation = true
end
UserMailer.invitation_instructions(self.resource, current_inviter, @object).deliver
...
def invitation_instructions(resource, inviter, object)
@resource = resource
@object = object
@inviter = inviter
mail(:to => resource.email, :subject => 'New invitation from ' + inviter.first_name)
end
このアップデートで提供されるソリューションは機能します。しかしそれは非常にきれいではないと感じます。私はまた、よりクリーンなソリューションを楽しむだろう。 1つの方法は、devise_invitableにパッチを当てて、 'invite!'を再定義してより多くのオプションを受け入れることです。 – Guillaume
@ andrew-lankあなたは答えに更新を抽出し、それを受け入れてください。 –