Переопределение представлений Rails APP с открытым исходным кодом без редактирования исходных представлений

В настоящее время я работаю с приложением ROR. Проблема состоит в том, что приложение не было создано с большой настройкой.

Примечание: это приложение ROR, а не двигатель

Я бы хотел:

  • переоценить текущие представления
  • Избегайте редактирования представлений в исходном коде приложения
  • Измените язык шаблона с.slim (который он есть в настоящее время) на.erb

Я попытался преобразовать приложение в движок, смонтировать его и затем создать представления. Который перевесит те, что в приложении.

Хотя это не работает, и потребуется много времени, чтобы подготовить его к работе.

2 ответа

Решение

На самом деле, лучший способ - использовать приложение в качестве движка. Насколько это сложно, зависит от текущего приложения. Но я лично не вижу особых различий между изменением исходного кода представления напрямую или копированием всего кода представления и изменением его в другом месте. Как правило, представления не "наследуют" друг друга, поэтому вам придется копировать-вставлять и редактировать тот же код, что и в исходном коде приложения.

Кстати, если вы хотите легко сделать его готовым к работе с движком, вы можете попробовать просто извлечь папку представлений (и, при необходимости, помощники, ресурсы), поместить ее в движок и оставить все вещи (контроллеры, модули, маршруты и т. Д.).) в основном приложении. Затем в основном приложении вы можете создавать представления с соответствующим путем, копировать его содержимое из движка и изменять только их.

Но для такой или схожей цели в Spree используется гем Deface, который облегчает взаимодействие расширений. Суть этой жемчужины в том, что исходные виды не изменяются и вы создаете deface переопределяет файлы, которые, используя синтаксис Nokogiri (css, xpath), изменяют содержимое реальных представлений во время выполнения.

В контроллере вы можете использовать команду render "name_of_custom_view" переопределить вид действия по умолчанию. ( http://guides.rubyonrails.org/layouts_and_rendering.html)

Разве не поддерживается язык шаблонов.erb из коробки? Попробуйте назвать ваши собственные представления *.html.erb вместо *.html.slim.

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