Как ВЫСУШИТЬ ГРУБЫЕ части моего приложения Rails?

StackOverflow https://stackoverflow.com/questions/477092

  •  20-08-2019
  •  | 
  •  

Вопрос

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

Что касается этих 90%, я старался придерживаться принципа DRY настолько, насколько мог.Пока контроллеры работают, я обнаружил, что resource_controller действительно работает, и я мог бы избавиться от всех контроллеров в этой области, заменив их универсальным.

Теперь я хотел бы знать, как добиться того же с представлениями.В этом приложении у меня есть общий макет application.html.erb, а затем у меня должен быть другой слой макета, общий для всех CRUD-представлений и, наконец, "основная" часть:

  • В index.html.erb все, что мне нужно, это сгенерировать простую таблицу с полями и метками, которые я указываю.

  • Для создания и редактирования также используется версия общей формы с указанием меток и полей (с возможностью предоставления пользовательских полей при необходимости).

  • Я не уверен, что мне понадобится show, но если я это сделаю, это будет то же самое, что создать и отредактировать.

Какие плагины и инструменты (или даже статьи и общий указатель) помогли бы мне в этом?

Спасибо, Фелипе.

Это было полезно?

Решение

Если вы высушили контроллеры и теперь хотите ВЫСУШИТЬ представления, один из подходов заключается в render :action => *actionname* и сохранение содержимого пользовательского интерфейса, которое может измениться в переменные экземпляра (чтобы они были доступны в представлении) Таким образом, вы сможете повторно использовать одно и то же представление Редактировать, новое, Список или показать.Например, вы редактируете что-то, связанное с Фу тогда ваш заголовок должен гласить Editing <%= @type %>, то же самое должны делать ваши помощники по формированию. Фу вполне мог бы тогда сменить на бар.Таким образом, вы повторно используете одно и то же представление для разных объектов (или, лучше сказать, контроллеров).Помните, что, В отличие от redirect_to, render :action только отображает представление и не вызывает действие контроллера того действия, которое оно пытается отобразить.

Одно можно сказать наверняка: если вы хотите что-то высушить, вам нужно стандартизировать или следовать условностям.Например, структура ваших представлений, в данном случае.

Другие советы

Ты мог бы убежать script/generate scaffold test name:string description:text valid:boolean и посмотрите на представления, которые генерируются (и запускаются script/destroy scaffold test чтобы удалить файлы).Это даст вам хорошее представление о стандартном способе написания 4-х представлений Rails по умолчанию.

Я бы также рекомендовал прочитать соответствующие главы в "Agile Web Development with Rails" и "The Rails Way".

Если у вас есть существующие просмотры, которые необходимо очистить, этот эпизод Railscasts великолепен: Очистка вида

Дерзкий

Похоже, только что появился новый драгоценный камень, который очень близок к вашим требованиям:

http://github.com/codez/dry_crud

Основываясь на общем суперклассе (CrudController), вы можете наследовать функциональность CRUD для ваших контроллеров различных моделей и адаптировать то, что там особенное.Скорее всего, это то, что вы уже сделали.

Новое в dry_crud заключается в том, что представления и частичные элементы также наследуются.Вы определяете общий базовый шаблон для каждого CRUD-действия, возможно, разделенный на пару частей.Благодаря предоставленным вспомогательным средствам формы и таблицы могут быть определены в общем виде путем просмотра определений столбцов текущей модели.Затем в представлениях вашей конкретной модели вы можете адаптировать только те части или представления, которые нуждаются в настройке.

Ознакомьтесь с документацией, найденной на сайте выше, и оставайтесь СУХИМИ!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top