Rails: реструктуризация файлов представлений для разных типов MIME

Итак, у меня есть приложение Rails, которое отвечает на HTML, XML, JSON, мобильный телефон, планшет и т. д. Допустим, у меня есть ресурс «книга». Естественно, для этого ресурса потребуются "index.html.erb", "show.html.erb", "new.html.erb", "edit.html.erb", "_form.html.erb" и другие пользовательские функции. Как видите, в папке «views/books» будет много ненужных файлов. Я хочу иметь возможность разделить их в подпапках внутри папки «представления/книги»:

views/books/json
views/books/mobile
views/books/web
views/books/tablet

Как я могу сделать это, не испортив мои контроллеры? Есть ли обратный вызов (фильтр) между выполнением действия контроллера и выполнением представления? Если есть, это должно решить эту проблему.

Что усложняет мое приложение, так это то, что я хочу повторно использовать некоторые части в некоторых MIME, например, я хочу использовать «_login.erb» для мобильных устройств, Интернета и планшетов. Затем настройте его с помощью CSS.

Аналогичный вопрос задается здесь . Но я не удовлетворен ответом, потому что он довольно медленный и не решает мою общую проблему с частями.


person wael34218    schedule 12.05.2012    source источник


Ответы (1)


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

Прежде всего, я бы посоветовал не смешивать проблему JSON и HTML с проблемой Интернета, мобильных устройств и планшетов. «Мобильный» или «планшет» не являются типами пантомимы, я бы не стал взламывать функциональность представлений на основе пантомимы Rails, чтобы решить эту проблему.

В нашей компании мы используем разные представления для разных типов MIME (json/html) и используем одно HTML-представление, которое разветвляется внутри в зависимости от типа устройства. Было бы утомительно отражать изменения модели/контроллера в трех наборах представлений, по одному для каждого типа устройства. В большинстве случаев взгляды совпадают или лишь с небольшими различиями. Мы используем гем mobvious-rails для разветвления кода представления в зависимости от устройства. Разве это не было бы лучшим решением?

person Jiří Stránský    schedule 12.05.2012
comment
Я думаю, что это общий способ поддержки различных устройств, посмотрите эту ссылку railscasts.com/episodes/ 199-мобильных устройств. Мне также понравилась идея mobvious-rails, но она усложняет раздел представлений. В случае наличия типов MIME HTMLers будут иметь лучший контроль с меньшим количеством логики. - person wael34218; 12.05.2012