我有一个污损声明,它为上面的每一页添加了一个部分</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
是传入的许多变量之一:
- 从我的 gem 中打开 application_helper 并插入一个辅助方法。
- 打开
ApplicationController
并设置在@piwik_site_id
那里。在每个控制器上为每个动作和每个模板设置这个。
我宁愿不必污染具有此 gem 可用的应用程序的控制器。