0

我正在尝试在我的模型中渲染 html(对于 Mandrill 内联代码),但我似乎无法让 url_helpers 正确渲染

问题.haml

 %a{:href => email_question_url(question)}

模型.rb

  view = ActionView::Base.new(ActionController::Base.view_paths, @email_vars)
  view.extend ApplicationHelper
  questions_html = view.render(:partial => 'transactional_mailer/questions_html')

我理想地想跑:

      view.include Rails.application.routes.url_helpers

但是用未定义的方法轰炸包括 for actioniew::base

关于我如何解决这个问题的任何建议?

4

2 回答 2

0

我必须通过以下方式打开实例类并在其中包含实例方法:

  view = ActionView::Base.new(ActionController::Base.view_paths,{})

  class << view
    include Rails.application.routes.url_helpers
  end

  questions_html = view.render(:partial => 'transactional_mailer/questions_html')
于 2013-06-26T20:11:25.367 回答
0

在我的例子中,我需要(通过 RSpec)测试一个需要引用其中的视图实例的类,我做了以下操作:

let(:view) do
  ActionView::Base.new(ActionController::Base.view_paths, {}).tap do |view_instance|
    view_instance.instance_eval { self.class.include Rails.application.routes.url_helpers }
  end
end

它对我有用。它看起来不太好,但它有效。

于 2017-09-20T06:00:28.963 回答