2

我是 Ruby on Rails 的新手,我正在开发一个基于 spree gem 的小型电子商务网站。

但是,我想使用 spree deface 库更新/覆盖网站的前端部分。

Deface::Override.new(:virtual_path => 'spree/shared/_header',
:name => 'change store logo',
:replace => 'figure#logo',
:text => "<%= image_tag('/images/logo.png') %>"

这是我的代码,但在重新加载页面后,徽标仅被“徽标”一词取代,而不是图像本身。我的目标是错误的路径吗?覆盖的图像文件应该放在哪里?

这是页面的html:

    <div id="spree-header">
  <header id="header" data-hook>
    <div class="container">
      <div class="row">
        <figure id="logo" class="col-md-4 col-sm-3" data-hook>
          <%= logo %>
        </figure>
        <%= render partial: 'spree/shared/nav_bar' %>
      </div>
    </div>
  </header>
  <div class="container">
    <%= render partial: 'spree/shared/main_nav_bar' %>
  </div>
</div>

谢谢!

4

1 回答 1

0

我知道它是如何工作的。

我需要以 Ruby Assets 管道为基础,因此图像的路径应位于:railsapplication/apps/assets/images/*.png 以用作 deface 的覆盖。

代码也应该是:

    Deface:: Override.new(:virutal_path => 'spree/shared/_header', #change this at need
      :name => 'change store logo', #optional
      :replace => 'figure#logo' #id that will be replaced located at /_header
      :text => "<%= link_to image_tag('logos/logo_small.png') %>, #Ruby tag included
    )

并且应该可以毫无问题地工作。

于 2018-11-26T17:03:18.583 回答