我知道这不是一个“可接受”的做法,但作为后台进程,我将渲染的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: undefined method `url_for' for nil:NilClass类似的过程,没有运气
我知道render_anywhere是Rails 3.x应用程序的解决方案,但我在Rails 2.3.11中工作
思想?
答案 0 :(得分:2)
我有一个旧的应用程序,我必须在模型中执行类似的操作(但使用polymorphic_path
和polymorphic_url
)。
以下内容让我可以访问url_for
和polymorphic_path
等。
include ActionView::Helpers::UrlHelper
include ActionView::Helpers::TagHelper
include ActionController::PolymorphicRoutes
include ActionController::UrlWriter