読者です 読者をやめる 読者になる 読者になる

#4 回答機能の作成

第4回では、質問に回答する機能をつくります。

質問への回答機能

scaffoldを使用してテンプレートを作成します。

$ rails g scaffold answer user:references question:references content:text

生成されたマイグレーションファイルのquestion項目にnull: falseを追加して実行します。

$ rake db:migrate

routes.rbにルーティングの設定を追加します。色々な考え方があると思いますが、今回は下記のように設定しました。

resources :questions do
  resources :answers
end

現在の状態を確認します。ルーティングの設定は、開発の過程で変更する可能性もあります。

    question_answers GET    /questions/:question_id/answers(.:format)          answers#index
                     POST   /questions/:question_id/answers(.:format)          answers#create
 new_question_answer GET    /questions/:question_id/answers/new(.:format)      answers#new
edit_question_answer GET    /questions/:question_id/answers/:id/edit(.:format) answers#edit
     question_answer GET    /questions/:question_id/answers/:id(.:format)      answers#show
                     PATCH  /questions/:question_id/answers/:id(.:format)      answers#update
                     PUT    /questions/:question_id/answers/:id(.:format)      answers#update
                     DELETE /questions/:question_id/answers/:id(.:format)      answers#destroy
           questions GET    /questions(.:format)                               questions#index
                     POST   /questions(.:format)                               questions#create
        new_question GET    /questions/new(.:format)                           questions#new
       edit_question GET    /questions/:id/edit(.:format)                      questions#edit
            question GET    /questions/:id(.:format)                           questions#show
                     PATCH  /questions/:id(.:format)                           questions#update
                     PUT    /questions/:id(.:format)                           questions#update
                     DELETE /questions/:id(.:format)                           questions#destroy

参考リンクを見ながらコントローラとそれに関連するviewを編集して、回答できる状態をつくりました。この辺りの動作はUIも含めて検討中のものが多いので、ある程度まとまったら整理したいと思います。

参考: RailsのScaffoldでネストしたResourceを作る

現在の状態

新規回答画面

f:id:tsyknsr:20160629155522p:plain

質問閲覧画面

f:id:tsyknsr:20160629160825p:plain

参考