Проблема с виртуальной_пути в движках
Я работаю над приложением rails с несколькими монтируемыми двигателями. Я использую камень deface, чтобы переопределить некоторые части представлений, но у меня есть некоторые проблемы, чтобы обновить некоторые из них.
Я не знаю, если это проблема или ошибка, которую я делаю, но похоже, 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 даже не осознает существование этого виртуального пути. Я не знаю почему... Если я переместу код из частичного в файл макета (и обновлю виртуальный путь), все будет работать отлично.
1 ответ
Я нашел ответ...
Это была проблема из-за пространства имен.
Я определил ярлык для файла движка следующим образом:
paths["app/views"] << "app/views/dat"
(кстати, мое пространство имен "dat")
Просто чтобы избежать необходимости добавлять это пространство имен везде при вызове для просмотра. Что ж, похоже, "порча" этого не поняла.
Итак, как только я обновил код рендеринга в файле приложения, включив в него путь к пространству имен, все начинает работать...
<%= render "dat/shared/navbar" %>
И это все.