routes.rbファイルに次のカスタム ルートがあります。
match '/security_users/:id/email_confirmation/:activation_code' => 'email_confirmation#new'
指定されたSecurityUserの上記のパスを生成するカスタム ヘルパーを作成します。私の application_controler.rb ファイルには、上記の方法があります。
class ApplicationController < ActionController::Base
protect_from_forgery
private
def email_confirmation_path(security_user)
"/security_users/#{security_user.id}/email_confirmation/#{security_user.activation_code}"
end
helper_method :email_confirmation_path
end
しかし、 /views/security_user_mailer/email_confirmation.text.erb テンプレートで次のように呼び出すと:
<%= email_confirmation_path(@security_user) %>
次のエラーが表示されます。
#<#:0x6340ff53> の /security_users 未定義メソッド `email_confirmation_path' で NoMethodError
アドバイスいただけますか?
編集:
以下に、プロセスのワークフローを示します。
まず、ユーザーが作成されると、次の行が実行されます
@security_user.send_email_confirmation
上記のメソッドは、オブジェクト モデル ファイルで次のように定義されます。
def send_email_confirmation
SecurityUserMailer.email_confirmation(self).deliver
end
次に、メーラー コントローラーで、以下のメソッドが呼び出されます。
def email_confirmation(security_user)
@security_user = security_user
mail to: security_user.email, subject: 'Account Created'
end
前の方法では、カスタム パス ジェネレーター メソッドを呼び出す必要があるテンプレートを使用しています。
<%= email_confirmation_path(@security_user) %>
しかし、未定義であるというエラーが発生します。