2013-06-24 5 views
0

나는 (드릴 인라인 코드) 내 모델에서 HTML을 렌더링하기 위해 노력하고 있어요하지만 난 url_helpers 렌더링을 얻을 수가 어차피 제대로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 :: base 포함

어떻게 접근 할 수있는 제안?

답변

0

나는 인스턴스 클래스를 엽니 다했고 통해 내 인스턴스 방법을 포함한다 : 나는 (RSpec을 통해)보기 인스턴스에 대한 참조를 필요로하는 클래스를 테스트하는 데 필요한 내 경우에,

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

그 안에, 나는 다음과 같이했다 :

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 

그것은 나를 위해 일했다. 그것은 멋져 보이지 않지만 작동합니다.