2013-08-13 2 views
5

Я использую Devise с моим приложением Rails 3.2, и я хочу иметь возможность добавлять новые записи в качестве конверсий в Google Analytics. Я хотел бы, чтобы новые пользователи перенаправлялись на ту же страницу, на которую они перенаправляются, если это возможно (т. Е. Может быть пропуском через представление, которое перенаправляет на текущую страницу пользователи перенаправляются после создания).Как отслеживать определение регистрации пользователей в качестве конверсии в Google Analytics

Может кто-нибудь, пожалуйста, помогите мне найти лучший способ сделать это с помощью Devise?

# users/registrations_controller.rb 
# POST /resource 
def create 
    build_resource 
    if resource.save   
    if resource.active_for_authentication? 
     set_flash_message :notice, :signed_up if is_navigational_format? 
     sign_up(resource_name, resource) 
     respond_with resource, :location => after_sign_up_path_for(resource) 
    else 
     set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format? 
     expire_session_data_after_sign_in! 
     respond_with resource, :location => after_inactive_sign_up_path_for(resource) 
    end 
    else 
    clean_up_passwords resource 
    respond_with resource 
    end 
end 

def after_sign_up_path_for(resource) 
    after_sign_in_path_for(resource) 
end 

ответ

10

С верхней части головы я использую вспышку.

The flash provides a way to pass temporary objects between actions. Anything you place in the flash will be exposed to the very next action and then cleared out.

На registrations_controller.rb:

if resource.active_for_authentication? 

    flash[:user_signup] = true # or something that you find more appropriate 

    set_flash_message :notice, :signed_up if is_navigational_format? 
    sign_up(resource_name, resource) 
    respond_with resource, :location => after_sign_up_path_for(resource) 
else 
    set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format? 
    expire_session_data_after_sign_in! 
    respond_with resource, :location => after_inactive_sign_up_path_for(resource) 
end 

Затем, на том, что вы переадресованы к после Signup, я бы вынести необходимый код, чтобы вызвать событие Google Analytics основанный на наличии flash[:user_signup].

+1

Это сработало. Используя вашу идею и этот пост http://blog.scoutapp.com/articles/2009/10/27/rails-google-analytics-easy-goal-tracking, я понял, что могу изменить URL-адрес, который содержит код Google Analytics читал http://bit.ly/R01O8l (изменение _trackPageview()) – yellowreign

1

Вы можете сделать это из контроллера:

Шаг 1: для того, чтобы держать его организовал, вы можете создать файл app/controllers/concerns/trackable.rb со следующим содержанием:

module Trackable 
    extend ActiveSupport::Concern 

    def track_event(category, action) 
    push_to_google_analytics('event', ec: category, ea: action) 
    end 

    def track_page_view 
    path = Rack::Utils.escape("/#{controller_path}/#{action_name}") 
    push_to_google_analytics('pageview', dp: path) 
    end 

    private 

    def push_to_google_analytics(event_type, options) 
    Net::HTTP.get_response URI 'http://www.google-analytics.com/collect?' + { 
     v: 1, # Google Analytics Version 
     tid: AppSettings.google_analytics.tracking_id, 
     cid: '555', # Client ID (555 = Anonymous) 
     t: event_type 
    }.merge(options).to_query if Rails.env.production? 
    end 
end 

Шаг 2: Замените идентификационный номер ID.

Шаг 3: Наконец, отслеживать переходы в контроллере:

# app/controllers/confirmations_controller.rb 
class ConfirmationsController < Devise::ConfirmationsController 
    include Trackable 

    after_action :track_conversion, only: :show 

    private 

    def track_conversion 
    track_event('Conversions', 'from_landing_page') 
    # or # track_event('Conversions', user.email) 
    end 
end 

Дополнительно: Вы можете также использовать метод track_page_view для отслеживания конкретных действий, которые не имеют представления (как запросов API).

Дополнительная информация здесь: https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide.

Смежные вопросы