我想在mailer.rb文件中使用“link_to”。我已经在初始化程序中设置了默认主机。
以下两项都不包括作品
include Rails.application.routes.url_helpers
include ActionView::Helpers::UrlHelper
class MessageMailer < ActionMailer::Base
...
"#{ link_to 'something', something_url } is the link"
end
我在控制台中调用MessageMailer.welcome_employer(Employer.find(18)).deliver
时得到的错误:
(没有或include ActionView::Helpers::TextHelper
存在)NoMethodError:未定义的方法`link_to'为#
(仅包含'包含ActionView :: Helpers :: TextHelper'或两者都存在)RuntimeError:为了使用#url_for,您必须明确包含路由助手。例如,`include Rails.application.routes.url_helpers
我使用视图内容在动态电子邮件中使用它,如下所示,
@email_type.header.gsub('<Lot_No>',"#{view_context.link_to tile, root_url + product_tile_path(params)}")
我已经用rails 4中的两种方式解决了这个问题:
要么
在Rails 5中,以下内容对我有用:
class MessageMailer < ActionMailer::Base
"#{ view_context.link_to 'something', something_url } is the link"
end
要使MessageMailer
中的url助手可用,您必须将includes移动到类定义中:
class MessageMailer < ActionMailer::Base
include Rails.application.routes.url_helpers
include ActionView::Helpers::UrlHelper
"#{ link_to 'something', something_url } is the link"
end