从Deface渲染局部时,将变量(局部)传递给局部

时间:2015-02-06 13:11:42

标签: deface

我有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是传入的众多变量之一:

  • 从我的gem中打开application_helper并插入一个帮助方法。
  • 打开ApplicationController并在那里设置@piwik_site_id。在每个控制器上为每个操作和每个模板设置此项。

我宁愿不必污染具有此gem的应用程序的控制器。

0 个答案:

没有答案