使用Deface Overrides替换Spree中的简单链接

时间:2014-07-12 22:28:07

标签: ruby-on-rails ruby-on-rails-4 spree deface

我是Spree的新手,似乎无法绕过" erb [大声]"替换动态rails内容的方法......

我只是想替换“家庭'导航栏上的链接使用不同的文本,例如"最新产品"。文本将用户重定向到完全相同的索引页面...我只想用一些不同的文本替换链接。部分疯狂核心是:

spree / frontend / app / views / spree / shared / _main_nav_bar.html.erb ...

<nav class="columns sixteen">
  <ul id="main-nav-bar" class="inline" data-hook>
    <li id="home-link" data-hook><%= link_to Spree.t(:home), spree.root_path %></li>
    <li id="link-to-cart" data-hook>
      <noscript>
        <%= link_to Spree.t(:cart), '/cart' %>
      </noscript>
      &nbsp;
    </li>
    <script>Spree.fetch_cart()</script>
  </ul>
</nav>

到目前为止,我已在我的应用中创建了一个覆盖文件以使用deface:

store / app / overrides / change_home_text.rb

Deface::Override.new(:virtual_path => 'spree/shared/_main_nav_bar',
  :name => 'change_home_text',
  :replace => "erb[loud]:contains('<li id="home-link" data-hook><%= link_to Spree.t(:home), spree.root_path %></li>')",
  :text => "<li id="home-link" data-hook><%= link_to, 'Newest Products', Spree.t(:home), spree.root_path %></li>")

如何设置:replace和:text行以正确替换带有新文本的链接?

非常感谢,

1 个答案:

答案 0 :(得分:0)

想通了......我过于复杂了。只需要:

Deface::Override.new(:virtual_path => 'spree/shared/_main_nav_bar',
  :replace => "li#home-link",
  :text => "<li id='home-link' data-hook><%= link_to 'Newest Products', spree.root_path %></li>",
  :name => "change_home_text",)