我正在使用Google AnalyticsAPI的Garb Ruby包装为我的应用构建一个综合浏览量计数器。这样做意味着在'lib'文件夹中创建一个新模块,我在其中创建一个这样的类:
#lib/Analyze.rb
...
class Report
extend Garb::Resource
metrics :pageviews
dimensions :page_path
filters :page_path.eql => '/' #the path of the page I instantiate this class on
end
#followed by a method for instantiating this class
我需要过滤器:page_path.eql =>成为我调用该方法的页面的路径。我尝试过像request.request_uri或url_for(:action =>'show':controllers =>'users':id => params [:id])但不知道如何指定页面路径在这个类定义中。
答案 0 :(得分:1)
这将破坏MVC封装 - 我认为你应该在application_controller中创建一个before filter,它将你需要的请求数据传递给你的类。
修改强>
如果您想为特定页面构建一次性报告,我认为您需要执行以下操作:
profile = Garb::Profile.first('UA-XXXX-XX')
report = Garb::Report.new(profile)
report.metrics :pageviews
report.dimensions :page_path
report.filters :page_path.eql => request.request_uri
report.results
同样,如果你在每个页面上都有这个,我认为前一个过滤器是明智的。不过,相当肯定它会让你的应用减慢很多。