Rails的5:NoMethodError:未定义的方法`帮手”的MyMailer
我有一个简单的轨道5应用与装置和后每当我尝试注册,我得到以下错误:Rails的5:NoMethodError:未定义的方法`帮手”的MyMailer
NoMethodError in Devise::RegistrationsController#create undefined method `helper' for MyMailer(Table doesn't exist):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
你知道为什么这个类无法找到我的应用程序助手吗?
,如果它确实是一个邮递员,而不是一个型号,你应该从ApplicationMailer
继承,而不是ApplicationRecord
,否则它会在你的数据库中寻找表来支持它。
class MyMailer < ApplicationMailer
.....
end
对于您在Rails应用程序中使用的每个模型,都应该存在一个以模型名称的复数形式命名的表。所以在你的情况下,因为你的模型的名字是:MyMailer
所以你应该创建一个名为:my_mailers
的表。
rails g migration create_my_mailers
现在告诉我:''method_missing':MyMailer的未定义方法'helper'(调用'MyMailer.connection'来建立连接):Class(NoMethodError)'我应该在哪里做? – jonhue
你为什么写:'helper:application'?你想从'ApplicationHelper'的方法,写'include ApplicationHelper'。 –
错误是因为您在您的邮件程序中调用助手。如果你想在你的邮件程序中包含应用程序助手或任何助手,你必须使用“包含”关键字。
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
你为什么不用'include ApplicationHelper'? – dp7