我想要做的是使用谷歌分析的自定義事件跟蹤從我的控制器,其中的邏輯完成。我不太清楚如何將JavaScript代碼放在我的控制器中,或者如果可能的話。我怎麼會去把這樣的事情我的控制器內:如何在我的導航控制器中使用Google Analytics自定義事件?
_trackEvent(category, action, opt_label, opt_value, opt_noninteraction)
或
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);
的感謝!我應該使用哪一個? 編輯:
以下是我設置它基於的建議:
跟蹤代碼部分:
<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 %>
應用控制器(增加「值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
測試它在我的任務控制器:
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>
我想要這個現在...我如何確認它的工作原理,而無需等待GA來更新數據?另外,每個帳戶都有自己的子域是否重要?我想分開跟蹤所有子域(我已經爲此設置了高級過濾器)。最後,這是如何在開發環境中工作的?謝謝!! – 2012-02-14 22:28:59
將解決方案添加到原始文章 - 您是否介意查看我是否正確? – 2012-02-14 22:46:23
我認爲適合的「完成這項工作」的完整性檢查是查看瀏覽器中生成的HTML,看看是否看到用HTML編寫的合適的JS。將其與GA的文檔進行比較。你也可以使用rspec請求測試來測試HTML中適當的JS。如果這個解決方案在HTML中寫入適當的JS,那麼從那裏開始,更多的是「我如何測試GA事件」,我認爲這是一個不同的問題。 – cailinanne 2012-02-15 03:00:32