0

我有一个 Spree Commerce 应用程序,通过添加安装了 spree_bootstrap gem

gem 'spree_bootstrap', github: 'jdutil/spree_bootstrap'

到 Gemfile。

现在在主页上,我有所有熟悉的引导 div<div class="container row"><ul id="main-nav-bar" class="inline">.

我是 Rails 的新手,我想通过添加我自己的自定义导航栏和其他调整来更改布局母版页。不幸的是 application.html.rb 是一个实际上是空的页面,我不认为这是要进行更改的页面。

我的问题是:如何覆盖或更改标准 div 值?我没有本地文件。我听说过使用 Deface 作为工具,但我不知道如何使用它。

我希望这里有人可以提供有关更改标准引导 Spree 应用程序的更多见解。

4

2 回答 2

3

创建文件app/views/spree/layouts/spree_application.html.erb。复制并粘贴内容,然后根据需要进行编辑:)

对您可能想要重新设计的任何其他 Spree 视图和部分重复此操作。如果您想知道需要创建的路径和特定视图或部分视图的内容,请查看其GitHub 存储库app/views/spree的文件夹。

在看到任何更改之前,您可能需要重新启动服务器。

于 2014-01-18T19:34:31.407 回答
2

首先,我认为这个问题在其他几个 SO 问题中是重复的。不过我昨天确实处理了这个问题,所以我想我会给出答案。

您应该查看deface gem(Spree 使用什么来允许您覆盖视图)。这是一个关于如何替换内容的示例<ul id="main-nav-bar" class="inline">,假设文件是app/views/spree/shared/_nav_bar.html.erb​​ . 请注意,您必须找到要使用的选择器实际所在的文件:

# app/overrides/my_override.rb
Deface::Override.new(virtual_path: "spree/shared/nav_bar",
                     name: "my_navbar",
                     replace: "ul#main-nav-bar") do
  <<-HTML
  <nav class='navbar navbar-default navbar-fixed-top'>
    <div class='container'>
      ...
    </div>
  </nav>
  HTML
end

如果您需要更多帮助,您可能需要查看他们的文档。复制并粘贴要覆盖的 gem 的内容绝对不是一个好主意。

于 2015-01-13T10:46:42.813 回答