Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails google tracking manager的数据确定方法_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails google tracking manager的数据确定方法

Ruby on rails google tracking manager的数据确定方法,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个为google tracking manager定义数据的方法。首先,逻辑以视图的形式组织,但我认为这是不对的。我应该把方法放在控制器(应用程序控制器)还是模型中 def gtm_data(data_hash = nil) @gtm_data ||= {} if @dynamic_page gaPageUid = 'category-' + @dynamic_page.uid elsif @product gaPageUid = 'product' el

我有一个为google tracking manager定义数据的方法。首先,逻辑以视图的形式组织,但我认为这是不对的。我应该把方法放在控制器(应用程序控制器)还是模型中

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

是的,你可能想把它从你的视野中抹去。您可以考虑将其添加到<代码> AppultIX控制器(或者如果您的应用程序中不需要它的话,则是更具体的控制器),并公开一个帮助器方法。基本上,您只需将方法添加到
应用程序\u控制器
,以及以下操作:

helper\u方法:gtm\u数据


您还可以将代码放入
应用程序\u helper
,这是我个人的做法。可能无法将参数传递到控制器中公开的助手方法

谢谢,还有一个问题,是否值得测试(rspec)此方法?是的,我肯定会编写测试,以确保使用几个不同的输入返回预期的哈希。您能帮我编写测试吗?不太可能。这将涉及建立一个测试框架和导入助手/控制器。如果您决定走这条路线,Rspec文档很好。然后是
expect(gtm_数据(一些参数))的问题