我正在开发一个带有多个可安装引擎的 Rails 应用程序。我使用 deface gem 来覆盖视图的某些部分,但是在更新其中一些视图时遇到了一些问题。
我不知道这是我正在犯的问题还是错误,但是deface
当您在文件中有部分内容时似乎会触发一些问题layout
(我也在使用可安装的引擎)
让我用一个例子来解释。我的应用程序在 application.html.erb 文件中有以下代码。
<!-- some code -->
<div class = "container">
<header class="masthead">
<%= render "shared/navbar" %>
</header>
<!-- some more code -->
在 navbar.html.erb 文件中,我有:
<!-- some code -->
<li data-dat-hook='main_nav' class="nav-item">
<%= link_to 'Home', dat.root_path, class: "nav-link" %>
</li>
<!-- some more code -->
会触发污损的是data-dat-hook
.
在适当的文件中,在适当的位置定义:
Deface::Override.new(:virtual_path => "dat/shared/_navbar",
:name => "add_contacts_link_to_main_nav",
:insert_after => "[data-dat-hook='main_nav']",
:partial => "overrides/analyses_link",
:namespaced => true)
Deface 似乎甚至没有意识到这条虚拟路径的存在。我不知道为什么......如果我将代码从部分移动到布局文件(并更新虚拟路径),事情就会完美地工作。