6

Rails 3.2 アプリでDeviseを使用していますが、新しい登録を Google アナリティクスでコンバージョンとして追跡できるようにしたいと考えています。可能であれば、現在リダイレクトされているのと同じページに新しいユーザーを誘導したいと思います(つまり、ユーザーが作成後にリダイレクトされる現在のページにリダイレクトするパススルービューである可能性があります)。

誰かが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
4

2 に答える 2

11

頭のてっぺんからフラッシュを使います。

フラッシュは、アクション間で一時オブジェクトを渡す方法を提供します。フラッシュに配置したものはすべて、次のアクションにさらされてから消去されます。

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

次に、サインアップ後にリダイレクトするビューで、の存在に基づいて Google アナリティクス イベントをトリガーするために必要なコードをレンダリングしますflash[:user_signup]

于 2013-08-14T01:42:53.240 に答える
2

コントローラーから実行できます:

ステップ 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

于 2016-06-25T05:31:44.023 に答える