2013-06-24 3 views
0

Я пытаюсь сделать HTML в моей модели (для Mandrill встроенного кода), но я не могу показаться, чтобы получить url_helpers, чтобы сделать правильноКак включить route.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 

Но что бомбы о ut с неопределенным методом include for actioniew :: base

Любые предложения о том, как я мог бы подойти к этому?

ответ

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 

Это сработало для меня. Это не выглядит красиво, но оно работает.