【问题标题】:How to replace a Template using Deface如何使用 Deface 替换模板
【发布时间】:2015-03-05 23:44:53
【问题描述】:

我是 rails 新手,我已经建立了标准的 spree 电子商务解决方案。我现在想自定义默认模板和样式。根据 spree 文档 [1],最好的方法是使用 Deface。不幸的是,我无法确定现有视图/布局的位置。

例如,虽然文件建议:

例如,要覆盖主布局,请创建文件YOUR_SITE_OR_EXTENSION/app/views/spree/layouts/spree_application.html.erb

我的 app/views 文件夹不包含名为 spree 的文件夹

谁能告诉我,如何更改视图模板?

谢谢。

[1]https://guides.spreecommerce.com/developer/view.html

【问题讨论】:

  • 你试过创建那个目录吗?
  • 我刚做了,但重启ruby应用后没有效果:(
  • 所以你已经在上面的位置添加了一个应用程序布局,具有上面的名称 - 并且具有不同的内容(所以你知道它是否有效)并且它没有使用其他布局?
  • 我现在也尝试在不添加内容的情况下插入布局spree_application.html.erb。我的主页现在是空白的。所以它似乎工作。但我的实际问题是,我在哪里可以找到原始布局页面以更改它们?另外,如果我只是编辑布局文件,它将完全改变。但我认为使用 Deface 会更好,因此不需要更改原始布局页面。

标签: ruby-on-rails spree deface


【解决方案1】:

您必须实际创建该目录以及沿途的每个目录,直到您到达要覆盖的文件。如果你从你的根目录运行这些命令,你应该很好。

mkdir app/views/spree
mkdir app/views/spree/layouts
touch app/views/spree/layouts/application.html.erb

然后将此处的内容:https://github.com/spree/spree/blob/master/frontend/app/views/spree/layouts/spree_application.html.erb 复制到您刚刚创建的文件中。

如果您重新启动网络服务器,您应该能够对本地 application.html.erb 文件进行更改并在本地查看它们。

任何时候你想完全覆盖一个模板,你可以在 Github 上找到你需要覆盖的模板:https://github.com/spree/spree 并重新创建必要的文件/目录。 Spree 会在 gem 之前在 localhost 中查找模板,因此只要在正确的目录中覆盖正确的模板,您就可以自定义任何您喜欢的视图。

【讨论】:

  • 如果我运行这些命令,它将为我创建文件夹和 application.html.erb 文件,该文件是空的,即使重新启动应用程序也不会更改。我想要实现的是获取所有视图,以便我可以更改我想要的视图。但到目前为止,我不知道默认视图文件的结构..
  • 查看编辑。您可以覆盖您喜欢的任何模板,只要它在本地与 Spree gem 中的路径相同。
【解决方案2】:

或者,您可以尝试运行 rails generate spree:frontend:copy_views 命令从 gems 中提取您需要的所有视图,并且可以严格按照 gems 文件夹层次结构手动添加缺少的任何内容。例如,在 gems 中是 parsl 在下面的 spree_backend/views/spree/admin/users/_lifetime_stats.html.erb。要输入所需的代码,我必须在以下路径上创建一个文件夹 - 项目的名称/app/views/spree/admin/users/_lifetime_stats.html.the erb 以及我将在此处进行的所有更改都将落入主视图代码。这是 Deface::override 的替代方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多