Spree:使用Deface替换类属性

时间:2014-01-05 17:51:32

标签: spree

我想使用Deface将类从“第四列”替换为“第三列”。

<aside id="sidebar" class="columns four" data-hook>
  <%= yield :sidebar %>
</aside>

我不确定我需要采取什么行动和来源。这就是我到目前为止所拥有的。

Deface::Override.new(:virtual_path => "shared/_sidebar", 
                     :name => "grid", 
                     :set_attributes => '.columns three', 
                     :attributes => {:class => 'pretty', :title => 'This is a link'})

1 个答案:

答案 0 :(得分:6)

你快到了那里:

Deface::Override.new(
  :virtual_path       => 'spree/shared/_sidebar',
  :name               => 'grid',
  :set_attributes     => '.columns.four',
  :attributes         => {:class => 'columns three', :title => 'This is a link'})

您不需要:source:action :set_attributes。请注意set_attributes用于选择当前存在的内容(即您要更改的内容),并使用:attributes选项提供新属性。

编辑:污损评论的问题:

Deface::Override.new(
  :virtual_path       => 'path/to/view',
  :name               => 'some name',
  :replace => %{[erb-loud]:contains(' !content_for?(:sidebar) ? "sixteen" : "twelve" ')},
  text: '<%= !content_for?(:sidebar) ? "thirteen" : "twelve" %>"'
)

在较新版本的Deface中,您应该也可以使用erb[loud],只需进行小的语法更改。