我想使用" link_to"在mailer.rb文件中。我已经在初始化程序中设置了默认主机。
以下任何一项都不包含作品
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&#39;对于#
(只包含&#39;包含ActionView :: Helpers :: TextHelper&#39;或两者都存在) RuntimeError:为了使用#url_for,您必须显式包含路由助手。例如,`include Rails.application.routes.url_helpers
答案 0 :(得分:1)
I used it in dynamic emailer using view_content as below,
Lightbox
答案 1 :(得分:0)
我已经用rails 4中的两种方式解决了这个问题:
您可以在每个环境中指定邮件主机。例如:
Rails.application.routes.default_url_options [:host] =&#39; http://localhost:3000&#39;
您可以使用ActionController :: Base.helpers.link_to
ActionController :: Base.helpers.link_to(&#34; Active&#34;,disable_sub_newsletter_users_url,:class =&gt;&#34; tiny button alert&#34;,method :: post)
或
使用网址
Rails.application.routes.url_helpers.url_for(:controller =&gt;&#34; users&#34;,:action =&gt;&#34; disable_sub_newsletter&#34;
您必须删除班级上方的2行
包括Rails.application.routes.url_helpers
包括ActionView :: Helpers :: UrlHelper
答案 2 :(得分:0)
在Rails 5中,以下内容对我有用:
class MessageMailer < ActionMailer::Base
"#{ view_context.link_to 'something', something_url } is the link"
end
答案 3 :(得分:-1)
要使MessageMailer
中的网址助手可用,您必须将包含移动到类定义中:
class MessageMailer < ActionMailer::Base
include Rails.application.routes.url_helpers
include ActionView::Helpers::UrlHelper
"#{ link_to 'something', something_url } is the link"
end