我有一个简单的rails 5应用程序和设计,每当我尝试注册时,我都会收到以下错误:
Devise中的NoMethodError :: RegistrationsController #create MyMailer的未定义方法`helper'(表不存在):Class
错误发生在第2行:
class MyMailer < ApplicationRecord
helper :application # gives access to all helpers defined within `application_helper`.
include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url`
default template_path: 'devise/mailer' # to make sure that your mailer uses the devise views
end
你知道为什么这个班级找不到我的申请助手吗?
答案 0 :(得分:2)
如果它真的是Mailer而不是Model,你应该继承ApplicationMailer
而不是ApplicationRecord
,否则它会在你的数据库中查找表来支持它。
class MyMailer < ApplicationMailer
.....
end
答案 1 :(得分:1)
对于Rails应用程序中的每个模型,应该存在一个表,以模型名称的复数形式命名。因此,在您的情况下,由于模型的名称是:MyMailer
,因此您应该创建一个名为my_mailers
的表。
rails g migration create_my_mailers
答案 2 :(得分:1)
错误是因为您在邮件程序中调用帮助程序。如果要在Mailer中包含应用程序帮助程序或任何帮助程序,则必须使用“include”关键字。
class MyMailer < ApplicationRecord
helper :application # This line is causing the error
include Devise::Controllers::UrlHelpers
default template_path: 'devise/mailer'
end
这是您应该包含应用程序帮助程序的方法
class MyMailer < ApplicationRecord
include ApplicationHelper
include Devise::Controllers::UrlHelpers
default template_path: 'devise/mailer'
end