AnswersController#create
должны принять ответы.Независимо от того, имеет ли этот контроллер соответствующую модель ответа, не имеет значения.Одно действие должно никогда выполнять два действия.Например, если ваш QuestionsController#show
отображает вопрос, и принимают :put
или :post
с ответом на вопрос, то вы нарушаете основные принципы проектирования рельсов.
Обратите внимание, что ваш файл маршрутов может очень хорошо выглядеть следующим образом:
resources :questions do
resource :answer
end
, который откроет маршрут / questions / 8 / answer, который вы можете: отправлять на, который перейдет к AnswersController#create
.
Внизу головы я забыл точное название метода URL-адреса помощника, который вы можете использовать для генерации URL-адреса.Что-то вроде question_answer_path (@my_question).
Этот файл маршрутизации предназначен для rails3, который, как я полагаю, используется вами, поскольку, по моему мнению, нет никаких оснований использовать что-либо еще, если вы запускаете новое приложение:p
Если у вас есть модель Answer
(возможно, вы хотите сохранить ответы пользователей и просмотреть их позже или объединить их и получить статистику и т. д.), то вам следует изменить маршрутизатор на использование resources :answer
вместо единственной версии.
Для получения дополнительной информации о маршрутизации и некоторых советах по RESTful вы должны посетить руководство по Ruby on Rails для маршрутизации, найденное здесь: http://guides.rubyonrails.org/routing.html
Я нахожусь наредактирование веселья!Есть моменты, когда вам может понадобиться добавить дополнительный метод к вашему контроллеру вопросов, который не является строго REST.Это не обязательно считается плохой практикой, но просто убедитесь, что вы смотрите на свои решения и выясняете, действительно ли вы просто скрываете существование другого ресурса.Я не считаю это одним из тех случаев, как объяснено выше:)