2

我有一个污损声明,它为上面的每一页添加了一个部分</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 可用的应用程序的控制器。

4

0 回答 0