梅勒的Link_to

时间:2015-04-13 19:24:33

标签: ruby-on-rails

我想使用" 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

4 个答案:

答案 0 :(得分:1)

I used it in dynamic emailer using view_content as below,

Lightbox

答案 1 :(得分:0)

我已经用rails 4中的两种方式解决了这个问题:

  1. 您可以在每个环境中指定邮件主机。例如:

    Rails.application.routes.default_url_options [:host] =&#39; http://localhost:3000&#39;

  2. 您可以使用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)

    1. 使用网址

      Rails.application.routes.url_helpers.url_for(:controller =&gt;&#34; users&#34;,:action =&gt;&#34; disable_sub_newsletter&#34;

    2. 您必须删除班级上方的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