我有deface声明,它会在</body>
之上的每个页面添加部分声明。
Deface::Override.new(
:virtual_path => 'spree/layouts/spree_application',
:name => 'add_piwik_tracking_tag_to_layout',
:insert_bottom => "[data-hook='body']",
:partial => 'spree/piwik')
部分需要一些变量。一个例子是本地或辅助方法:
_paq.push(['setSiteId', <%= piwik_site_id %>]);
或实例变量:
_paq.push(['setSiteId', <%= @piwik_site_id %>]);
或完全没有变量:
_paq.push(['setSiteId', <%= Spree::Config.preferred_piwik_id %>]);
有没有办法从Deface::Override.new()
传递它们?
我试图避免三种可能不好的模式,特别是因为这个piwik_site_id
是传入的众多变量之一:
ApplicationController
并在那里设置@piwik_site_id
。在每个控制器上为每个操作和每个模板设置此项。我宁愿不必污染具有此gem的应用程序的控制器。