Как СУШИТЬ части CRUD моего приложения на Rails? - PullRequest
3 голосов
/ 25 января 2009

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

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

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

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 26 января 2009

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

Одно можно сказать наверняка, если вы хотите высушить что-либо, вам нужно стандартизировать или следовать соглашению. Пример структуры вашего представления, в данном случае.

1 голос
/ 12 июня 2010

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

http://github.com/codez/dry_crud

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

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

Взгляните на документацию, найденную на сайте выше, и оставайтесь сухими!

1 голос
/ 25 января 2009

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

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

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

Дарий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...