2013-12-12 3 views
1

В файле «spree_application.html.erb» мне нужно переопределить существующую частичный Получить полный код из ниже ссылки:Невозможно переопределить существующий частичное использование Deface

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> 

Здесь мне нужно заменить после частичного использования Deface:

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

мой Deface файл: header_modification.rb:

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

Что должно быть написано в: заменить часть/любые другие действия могут быть использованы для переопределения, что парциальное с помощью искажать?

ответ

6

Вы можете проверить селектор рек, используя следующую команду:

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' %> 

Так это должно работать:

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

Это отличное решение моей проблемы. и в соответствии с вашим комментарием я буду использовать rake deface: test_selector, следовательно, для проверки раздела overriden. – Ajay

0

с использованием <code erb-loud> render :partial => 'spree/shared/header' </code> должно работать. Существует полезный инструмент по пути, который говорит вам, что: http://deface.heroku.com/

+1

К сожалению версии of Deface на Heroku немного устарели. Сопоставление синтаксиса erb, измененное в Deface 1.x, которое используется Spree 2.1.x. Вам лучше использовать задачу рейка для тестирования селекторов 'rake deface: test_selector'. – gmacdougall

Смежные вопросы