Lo que quiero hacer es usar el seguimiento personalizado de eventos de google analytic desde mis controladores, donde la lógica está hecha. No estoy muy seguro de cómo poner el código de JavaScript en mi controlador o si es posible en absoluto. ¿Cómo hago para poner algo como esto dentro de mi controlador:¿Cómo uso los eventos personalizados de Google Analytics dentro del controlador de mis rieles?
_trackEvent(category, action, opt_label, opt_value, opt_noninteraction)
o
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);
gracias! ¿Y cuál de estos debería estar usando? EDIT:
Así es como lo configuro en base a la sugerencia:
código de seguimiento parcial:
<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 (añadí en el parámetro "valor")
<% 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 %>
controlador de aplicación (añadido "valor PARAM)
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
probarlo en mi controlador de Tareas:
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
EDIT: aquí mi código de salida GA, parece que todo está correcto:
<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>
estoy tratando esto ahora ... ¿cómo puedo confirmar que funciona sin esperar GA para actualizar los datos? Además, ¿Importa que cada cuenta tenga su propio subdominio? Me gustaría realizar un seguimiento de todos los subdominios por separado (ya configuro filtros avanzados para esto). Por último, ¿cómo funciona esto en el entorno de desarrollo? ¡¡Gracias!! –
agregó la solución a la publicación original. ¿Te importaría buscar si la tengo correcta? –
Creo que el chequeo de cordura apropiado para "hacer esto" es mirar el HTML generado en su navegador y ver si ve el JS apropiado escrito en el HTML. Compare eso con los documentos para GA. También podría probar la unidad para el JS apropiado en el HTML, usando una prueba de solicitud rspec, supongo. Si esta solución escribe el JS apropiado en el HTML, a partir de ahí es más una cuestión de "cómo pruebo los eventos de GA", que creo que es una pregunta bastante diferente. – cailinanne