我的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) %>
我收到以下错误:
/security_users 处的 NoMethodError 未定义方法 `email_confirmation_path' for #<#:0x6340ff53>
你能建议吗?
编辑:
您可以在下面找到流程工作流程:
首先,当创建用户时,执行以下行
@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) %>
但我得到它未定义的错误。