ruby-on-rails - 大肆破坏以覆盖图像
问题描述
我是 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>
谢谢!
解决方案
我知道它是如何工作的。
我需要以 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
)
并且应该可以毫无问题地工作。