Проблема с виртуальной_пути в движках

Я работаю над приложением 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" %>

И это все.

Другие вопросы по тегам