jlf*_*aux 3 routing model ruby-on-rails-3
我正在将rails 2.3应用程序迁移到rails 3.2.我有一个对象用于管理我从不同来源收集的一些统计数据的缓存.由于收集过程很长,传统的片段缓存无法完成.我不得不异步填充缓存.AsynchCache对象,从Google Analytics获取数据并将部分内容存储在缓存中.
include Rails.application.routes.url_helpers
class AsynchCache
def self.get_popular_races_from_google_analytics(lang='en')
# getting info form GA using Garb.
end
def self.set_popular_races(language=nil)
av = ActionView::Base.new(Rails.configuration.paths['app/views'])
language_list = Global.instance.languages_UI.map{|a| a[0]}
for lang in language.nil? ? language_list : [language]
output = av.render(
:partial => "home/popular_races",
:locals => {:lang => lang}
)
Rails.cache.delete("popular_races_#{lang}")
Rails.cache.write("popular_races_#{lang}",output)
end
end
def self.get_popular_races(lang='en')
Rails.cache.read("popular_races_#{lang}")
end
end
Run Code Online (Sandbox Code Playgroud)
我用于显示的部分如下
当我想显示内容时,我只需要使用:
<div id="popular_races"> <%# AsynchCache.get_popular_races(params[:locale])-%> </div>
Run Code Online (Sandbox Code Playgroud)
它在我第一次加载页面时工作正常,或者在irb中工作正常,但如果我尝试重新加载页面或在development.rb中设置config.cache_classes = true,我会收到错误:
stack level too deep
Rails.root: /Users/macbook/Sites/marathons
Application Trace | Framework Trace | Full Trace
actionpack (3.2.1) lib/action_dispatch/middleware/reloader.rb:70
Run Code Online (Sandbox Code Playgroud)
如果我删除包含Rails.application.routes.url_helpers,我没有得到错误,但当然,我没有接受路由.
有没有一种新的方法从rails 3.2中的模型中获取路径方法?
我遇到了和你一样的问题.我做的是,而不是包括帮助者,我每次都这样使用它们:
Rails.application.routes.url_helpers.object_path(...)
归档时间: |
|
查看次数: |
2044 次 |
最近记录: |