Добавить обертку ко всем представлениям Devise - PullRequest
0 голосов
/ 03 февраля 2012

Я использую Devise с Rails 3.1 и сгенерировал все представления для Devise.

Я хочу, чтобы любое представление Devise было заключено в div:

<div class="devise-container">
  <!-- Devise view -->
</div>

ВВ тот момент, когда я вручную добавил это к каждому представлению Devise, но это не очень СУХОЙ.Есть ли лучший способ?

Ответы [ 3 ]

3 голосов
/ 03 февраля 2012

Предполагая, что вы используете контроллеры Devise и не переопределяете их, вы можете создать макет под названием «devise.html.haml» или «devise.html.erb» (или любой другой язык шаблонов, который вы используете) в обычном приложении просмотрите каталог / layout / и добавьте нужный код.

Этот макет должен автоматически загружаться и переопределять ваш контроллер приложения, потому что имя макета совпадает с именем контроллера.

Однако, тем не менее, лучшим решением может быть добавление класса к тегу макета вашего приложения с текущим именем контроллера ( controller.name ) и использование CSS для управления проблемой путем добавления Пользовательский стиль только для "body.devise" страниц. Это решение является более гибким и добавляет меньше помех в код вашего приложения, поскольку это проблема представления.

1 голос
/ 03 февраля 2012

Нет.Или вы можете выполнить рефакторинг вида.

Установить вид из устройства это точно так же, как создать новый файл вида.

В рефакторинге представления вы можете использовать некоторый помощник для выполнения этого конкретного div.Или сделать какую-то «раскладку»

0 голосов
/ 22 апреля 2018

Я создал _devise-wrapper-start.html.erb в представлениях / макетах с помощью

<div class="devise-container">

и _devise-wrapper-end.html.erb с </div>и затем в каждом представлении я ставлю

<%= render 'layouts/devise-wrapper-start' %>

в начале и

<%= render 'layouts/devise-wrapper-end' %>

в конце.

Это более СУХОЙ (не повторяйте себя)чем просто помещать HTML внутри представлений devise.

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

Это наполовину решение, ноя не нашел ничего лучшего.

...