2013-06-24 75 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 

它爲我工作。它看起來不太好,但它的工作原理。