Модель Rails / структура контроллера - PullRequest
0 голосов
/ 13 марта 2012

Недавно я только начал заниматься программированием с помощью ruby ​​on rails, и мне было трудно понять, как именно я должен структурировать и организовать весь мой код, в частности, как именно определить, какими должны быть определенные каркасы / модели / контроллеры. делает.

Например, у меня есть приложение, в котором я хочу, чтобы на первой странице была только начальная страница, дающая зрителю возможность войти или зарегистрироваться (стандартный экран приветствия). Я создал скаффолд пользователей и планировал использовать его для обработки всех основных страниц, которые видит пользователь с точки зрения своего профиля. Я также использовал devise для обработки входа и регистрации.

Однако я точно не знаю, как обращаться с этой страницей приветствия. На данный момент я просто изменил index.html.erb, который автоматически сгенерировал скаффолд Users, но на самом деле он не подходит, поскольку на самом деле это не страница, связанная с профилем пользователя.

Существует ли общее соглашение о том, как разделять функциональность контроллеров? Что я должен делать со страницами, которые не обязательно имеют какое-либо отношение к конкретным аспектам базы данных (например, страницы контактов, экраны приветствия и т. Д.).

Кроме того, меня немного смущает вопрос о назначении по умолчанию application_controller.rb. Похоже, что все расширяет его, но я должен изменить это (возможно, использовать для общих страниц, которые я упомянул выше)?

Заранее спасибо, извините за очень длинный пост!

Ответы [ 2 ]

0 голосов
/ 13 марта 2012

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

rails generator controller Home main

Обратите внимание, что вы можете сократить его до

rails g controller Home main

Впоследствии, если вы отредактируете свой файл route.rb, вы можете присоединить этот контроллер и выполнить действие длякорневая директива:

root :to => 'home#main'

ApplicationController - это то, от чего будут расширяться все остальные ваши контроллеры.Если вы хотите обмениваться кодом между контроллерами, вы должны поместить этот код в ApplicationController.

0 голосов
/ 13 марта 2012

Если вам нужна общая домашняя страница, просто сгенерируйте контроллер по любому имени. У меня есть два последних из них, названные play и lycee.

Вы правы, ApplicationController в основном должен быть расширен. Иногда вы помещаете туда какой-нибудь код, но он будет маленьким.

...