在ActiveRecord模型中呈现Rails 2.3.x模板时未定义的方法'url_for'

时间:2011-11-09 19:31:22

标签: ruby-on-rails actioncontroller actionviewhelper

我知道这不是一个“可接受”的做法,但作为后台进程,我将渲染的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中工作

思想?

1 个答案:

答案 0 :(得分:2)

我有一个旧的应用程序,我必须在模型中执行类似的操作(但使用polymorphic_pathpolymorphic_url)。

以下内容让我可以访问url_forpolymorphic_path等。

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