确定谷歌跟踪管理器数据的方法

时间:2017-01-26 21:07:22

标签: ruby-on-rails ruby-on-rails-3

我有一种为Google跟踪管理器定义数据的方法。第一个逻辑组织在视图中,但我不认为这是对的。我应该将该方法放在控制器(application_controller)中还是放在模型中?

def gtm_data(data_hash = nil)
  @gtm_data ||= {}

  if @dynamic_page
    gaPageUid = 'category-' + @dynamic_page.uid
  elsif @product
    gaPageUid = 'product'
  else
    gaPageUid = 'other'
  end

  @gtm_data = {
   gaLocale: @locale, gaLanguage: @lang,
    gaRegion: current_site.region, gaPageUid: gaPageUid
  }

  # setter call
  @gtm_data.merge!(data_hash) if data_hash

  @gtm_data
end

1 个答案:

答案 0 :(得分:1)

是的,你可能想把它拉出你的观点。您可以考虑将其添加到application_controller(如果您的应用程序中不需要它,则可以添加更具体的控制器)并公开辅助方法。基本上你所要做的就是将你的方法添加到application_controller,以及:

helper_method :gtm_data

您也可以将代码放在application_helper中,这是我个人会这样做的方式。在控制器中暴露的辅助方法可能会出现问题: