То, что я хочу сделать, - это использовать отслеживание событий в Google Analytics изнутри моих контроллеров, где логика выполнена. Я не совсем уверен, как поместить код JavaScript в мой контроллер или если это вообще возможно. Как бы я поместил что-то подобное в мой контроллер:
_trackEvent(category, action, opt_label, opt_value, opt_noninteraction)
или
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);
спасибо! И какой из них я должен использовать?
EDIT:
Вот как я настроил это на основе предложения:
частичный код отслеживания:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-ACCOUNT']);
_gaq.push(['_setDomainName', 'sitename.com']);
_gaq.push(['_trackPageview']);
<%= render "layouts/ga_events" %>
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
_ga_events.html.erb (я добавил в параметре «значение»)
<% unless session[:events].nil? %>
<% session[:events].each do |event|%>
_gaq.push(['_trackEvent', '<%= event[:category]%>', '<%= event[:action]%>', '<%= event[:label]%>', '<%= event[:value]%>']);
<% end %>
<% end %>
<% session[:events] = Array.new %>
контроллер приложения (добавлено «значение параметра»)
protected
# GA event logger
def log_event(category, action, label = nil, value = nil)
session[:events] ||= Array.new
session[:events] << {:category => category, :action => action, :label => label, :value => value}
end
тестирую его в моем контроллере Tasks:
def create
@task = @user.tasks.build(params[:task])
@task.author = current_user unless @user == current_user
if @task.save
log_event("Tasks", "Created", current_user.email, "123")
redirect_back tasks_path, :notice => t('tasks.created')
else
redirect_back tasks_path, :alert => @task.errors.full_messages
end
end
РЕДАКТИРОВАТЬ: здесь мой выходной код GA, похоже, все правильно:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA_CODE']);
_gaq.push(['_setDomainName', 'SUBDOMAIN']);
_gaq.push(['_trackPageview']);
_gaq.push(['_trackEvent', 'Priority', 'Created (day)', 'Label info', '']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>