В Rails есть ли способ вызвать request.request_uri в классе (не в контроллере)? - PullRequest
0 голосов
/ 13 октября 2010

Я создаю счетчик просмотров для своего приложения, используя оболочку Garb Ruby для API Google Analytics.Это означает создание нового модуля в папке '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]), но не знаю, как указать путь к странице в этом классеопределение.

1 Ответ

1 голос
/ 13 октября 2010

Это нарушит инкапсуляцию MVC - я думаю , вам следует создать фильтр before в вашем application_controller, который передает необходимые данные запроса вашему классу.

EDIT

Если вы хотите создать одноразовый отчет для конкретной страницы, я думаю, вам нужно будет сделать что-то вроде этого:

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

Опять же, если у вас естьэто на каждой странице, перед фильтром было бы целесообразно, я думаю.Хотя я уверен, что это сильно замедлит работу вашего приложения.

Это описано в документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...