梅勒的Link_to

问题描述 投票:1回答:4

我想在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

ruby-on-rails
4个回答
1
投票

我使用视图内容在动态电子邮件中使用它,如下所示,

@email_type.header.gsub('<Lot_No>',"#{view_context.link_to tile, root_url + product_tile_path(params)}")

0
投票

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

  1. 您可以在每个环境中指定邮件主机。例如: Rails.application.routes.default_url_options [:host] ='http://localhost:3000'
  2. 您可以使用ActionController :: Base.helpers.link_to ActionController :: Base.helpers.link_to(“Active”,disable_sub_newsletter_users_url,:class =>“tiny button alert”,方法:: post)

要么

  1. 使用网址 Rails.application.routes.url_helpers.url_for(:controller =>“users”,:action =>“disable_sub_newsletter”
  2. 您必须删除班级上方的2行 包括Rails.application.routes.url_helpers 包括ActionView :: Helpers :: UrlHelper

0
投票

在Rails 5中,以下内容对我有用:

class MessageMailer < ActionMailer::Base

  "#{ view_context.link_to 'something', something_url } is the link"

end

-1
投票

要使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
© www.soinside.com 2019 - 2024. All rights reserved.