2015-05-21 90 views
1

我想從邊欄添加分類到主頁面,而不是產品列表,但是我的破損不起作用。Deface _products data-hook

Deface::Override.new(
:virtual_path => 'spree/shared/_products', 
:name => 'change view', 
:replace => "[data-hook='homepage_products']", 
:text => " 
      <% max_level = Spree::Config[:max_level_in_taxons_menu] || 1 %> 
      <nav id='taxonomies2' class='sidebar-item' data-hook> 
       <% @taxonomies.each do |taxonomy| %> 
        <% cache [I18n.locale, taxonomy, max_level] do %> 
         <h4 class='taxonomy-root'><%= Spree.t(:shop_by_taxonomy, :taxonomy => taxonomy.name) %></h4> 
         <%= taxons_tree(taxonomy.root, @taxon, max_level) %> 
        <% end %> 
       <% end %> 
      </nav> ") 

我被困在這真的很糟糕。

+0

您不需要在nav id標記中提及數據掛鉤,而是在實際視圖中提及它。 –

回答

1

您應該將虛擬路徑替換爲主頁索引視圖1:spree/home/index,其中放置您要替換的元素。

此外,我不確定名稱應該包含空格,請嘗試將其改爲「change_view」。始終確保名稱是唯一的,並在添加新的損壞覆蓋文件時重新啓動服務器。

+1

如果您處於開發環境中,則在添加新的塗抹覆蓋文件時無需重新啓動。 – sybind

1

案例 - 重新啓動服務器:無需每次更改覆蓋時重新啓動服務器。

是的,你應該如果你有設置config.deface.enabled = false;通常我們將其設置爲production.rb,在這種情況下,您應該預編譯覆蓋。 See this for more info


調試技術: 如果你不知道的部分/模板的路徑是正確的,那麼你可以驗證使用這種技術

$ rake deface:get_result['spree/shared/_link_to_account'] 
=> ActionView::MissingTemplate: Missing template 

$ rake deface:get_result['spree/shared/_login_bar'] 
# ---------------- Before ---------------- 
# <% if spree_current_user %> 
# <li><%= link_to Spree.t(:my_account), spree.account_path %></li> 
# <li><%= link_to Spree.t(:logout), spree.logout_path %></li> 
# <% else %> 

你甚至可以驗證選擇,如

$ rake deface:test_selector['spree/shared/_login_bar , li'] 
# Querying 'spree/shared/_login_bar' for 'li' 
# ---------------- Match 1 ---------------- 
# <li> 
# <%= link_to 'Dashboard', '/admin' if spree_current_user.is_admin? %> </li> 
# ---------------- Match 2 ---------------- 

此外,如果錯誤仍然存​​在,即使在選擇器有蜜蜂n驗證,那麼你必須確保你要替換的text不包含任何syntax/runtime錯誤。

相關問題