Неопределенный метод url_for при отображении шаблона Rails 2.3.x внутри модели ActiveRecord - PullRequest
2 голосов
/ 09 ноября 2011

Я знаю, что это не «приемлемая» практика, но в качестве фонового процесса я кэширую визуализированный Rails-частичку в базу данных для более быстрого вывода через JSONP.Я нашел много ресурсов по этой теме и успешно вывел партиал Rails 2.3.x внутри модели ActiveRecord, НО, если я использую динамические URL-адреса внутри партиала, Rails взрывается.

Я получаю успешный вывод (минус динамическийURL) с этим ...

def self.compile_html  

  viewer = Class.new(ApplicationController)
  path = ActionController::Base.view_paths rescue ActionController::Base.view_root

  Question.all.each do |q|
  q.html = ActionView::Base.new(path, {}, viewer).render(:partial => "questions/cached_output", :locals => { :question => q })  
  sleep 1 # hold for complete output and debugging only
  q.save( false ) # bypass validations
  end
  return "Caching complete"
end

Я пытался включить ActionController::UrlWriter Модули и ActionView::Helpers::UrlHelper без удачи.Кажется, я не могу найти порядок создания экземпляров / включения, чтобы позволить частичному доступу к ActionController::Base.new.url_for() записать динамические маршруты в частичное.

Я пытался выполнить процесс, аналогичный RoR: неопределенный метод `url_for'для nil: NilClass без везения

Я знаю, что render_anywhere - это решение для приложений Rails 3.x, но я работаю в Rails 2.3.11

Мысли?

1 Ответ

2 голосов
/ 09 ноября 2011

У меня есть старое приложение, в котором я должен был сделать нечто подобное (но использовал polymorphic_path и polymorphic_url) в модели.

Следующие включения дали мне доступ к url_for и polymorphic_path и т. Д.

include ActionView::Helpers::UrlHelper
include ActionView::Helpers::TagHelper
include ActionController::PolymorphicRoutes
include ActionController::UrlWriter
...