google 跟踪管理器的数据确定方法
method for determining data for google tracking manager
我有一种方法可以为 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
是的,你可能想把它从你的视野中拉出来。您可以考虑将它添加到 application_controller
(或者如果您的应用程序中不需要它,则添加一个更具体的控制器)并公开一个辅助方法。基本上你所要做的就是将你的方法添加到 application_controller
,以及这个:
helper_method :gtm_data
你也可以把代码放在application_helper
里,我个人就是这样。可能无法将参数传递给控制器中公开的辅助方法
我有一种方法可以为 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
是的,你可能想把它从你的视野中拉出来。您可以考虑将它添加到 application_controller
(或者如果您的应用程序中不需要它,则添加一个更具体的控制器)并公开一个辅助方法。基本上你所要做的就是将你的方法添加到 application_controller
,以及这个:
helper_method :gtm_data
你也可以把代码放在application_helper
里,我个人就是这样。可能无法将参数传递给控制器中公开的辅助方法