Переопределение представлений 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.