2

我知道这不是“可接受的”做法,但作为后台进程,我将渲染的 Rails 部分缓存到数据库中,以便通过 JSONP 更快地输出。我在该主题上找到了许多资源,并在 ActiveRecord 模型中成功输出了 Rails 2.3.x 部分,但是如果我在部分 Rails 中使用动态 URL 会爆炸。

我得到了一个成功的输出(减去动态 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' for nil:NilClass没有运气

我知道 render_anywhere 是 Rails 3.x 应用程序的解决方案,但我正在使用 Rails 2.3.11

想法?

4

1 回答 1

2

我有一个旧应用程序,我必须在模型中做类似的事情(但使用polymorphic_pathand polymorphic_url)。

以下包括让我访问url_forpolymorphic_path

include ActionView::Helpers::UrlHelper
include ActionView::Helpers::TagHelper
include ActionController::PolymorphicRoutes
include ActionController::UrlWriter
于 2011-11-09T19:35:02.013 回答