2013-06-24 52 views
0

我试图渲染HTML在我的模型(对山魈内嵌代码),但我不能似乎得到了url_helpers呈现正确如何在rails中将routes.url_helpers包含到视图渲染器中?

questions.haml

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

model.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 

但是炸弹Ø用未定义的方法包括actioniew ::基地

任何建议,我可以如何处理这个?

回答

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') 
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 

它为我工作。它看起来不太好,但它的工作原理。