无法使用Deface覆盖现有部分

Aja*_*jay 1 ruby-on-rails spree

在"spree_application.html.erb"文件中,我需要覆盖现有的部分从下面的链接获取完整的代码:

https://github.com/spree/spree/blob/v2.1.2/frontend/app/views/spree/layouts/spree_application.html.erb

样品内容:

      <%= render :partial => 'spree/shared/header' %>

      <div id="wrapper" class="row" data-hook>

        <%= breadcrumbs(@taxon) %>

        <%= render :partial => 'spree/shared/sidebar' if content_for? :sidebar %>

        <div id="content" class="columns <%= !content_for?(:sidebar) ? "sixteen" : "twelve" %>" data-hook>
          <%= flash_messages %>
          <%= yield %>
        </div>

        <%= yield :templates %>

      </div>
Run Code Online (Sandbox Code Playgroud)

在这里我需要使用Deface替换以下部分:

  <%= render :partial => 'spree/shared/header' %>
Run Code Online (Sandbox Code Playgroud)

我的Deface文件:header_modification.rb:

 Deface::Override.new(:virtual_path => 'spree/layouts/spree_application',
                      :name         => 'header_modification',
                      :replace      =>    ?
                      :partial      => 'spree/shared/spree_application'
                     )
Run Code Online (Sandbox Code Playgroud)

应该写什么:替换部分/任何其他动作可以用来覆盖使用Deface的部分?

gma*_*all 6

您可以使用以下命令测试您的rake选择器:

rake deface:test_selector['spree/layouts/spree_application','erb[loud]:contains("spree/shared/header")']

Querying 'spree/layouts/spree_application' for 'erb[loud]:contains("spree/shared/header")'
---------------- Match 1 ----------------
<%= render :partial => 'spree/shared/header' %>
Run Code Online (Sandbox Code Playgroud)

所以这应该工作:

Deface::Override.new(:virtual_path => 'spree/layouts/spree_application',
                     :name         => 'header_modification',
                     :replace      => 'erb[loud]:contains("spree/shared/header")',
                     :partial      => 'spree/shared/spree_application'
                    )
Run Code Online (Sandbox Code Playgroud)