2013-08-13 11 views
5

Ich verwende Devise mit meiner Rails 3.2 App und möchte neue Registrierungen als Conversions in Google Analytics hinzufügen. Ich möchte, dass die neuen Benutzer, falls möglich, auf dieselbe Seite weitergeleitet werden, auf die sie jetzt umgeleitet werden (d. H. Kann eine Pass-Thru-Ansicht sein, die zu der aktuellen Seite umleitet, auf die Benutzer nach der Erstellung weitergeleitet werden).So erfassen Sie die Benutzerregistrierung als Conversion in Google Analytics

Kann mir bitte jemand helfen, den besten Weg herauszufinden, dies mit Devise zu tun?

# 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 

Antwort

10

Von der Spitze meines Kopfes, würde ich Blitz verwenden.

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.

Auf den 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 

Dann wird auf der Ansicht, die Sie nach einer Registrierung umleiten, würde ich den erforderlichen Code macht ein Google Analytics-Ereignis auslösen basierend auf der Anwesenheit von flash[:user_signup].

+1

Dies funktionierte. Mit Ihrer Idee und diesem Beitrag http://blog.scoutapp.com/articles/2009/10/27/rails-google-analytics-easy-goal-tracking, fand ich heraus, dass ich die URL des Google Analytics-Codes ändern konnte las http://bit.ly/R01O8l (änderte _trackPageview()) – yellowreign

1

Sie können es von Ihrem Controller tun:

Schritt 1:, um es zu halten organisiert, Sie eine Datei app/controllers/concerns/trackable.rb mit folgendem Inhalt erstellen:

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 

Schritt 2: Ersetzen Sie Ihre Tracking-ID.

Schritt 3: Schließlich Ihre Conversions in Ihrem Controller verfolgen:

# 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 

Extra: Sie auch die track_page_view Methode können bestimmte Aktionen verfolgen, die Ansichten nicht haben (wie API-Anfragen).

Weitere Informationen hier: https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide.

Verwandte Themen