blogアプリを作成してみましょう。
RailsではCRUD処理が全ての基本です。
Routesファイルに resources :aritcleと追記することでarticlesというモデルにアクセスするRout(ルート/道順)を設定することができます。
resources :aritcleとたった一文追記するだけで本当にアクセスルートが作られているのでしょうか。
$ rake routesで確認しましょう。
resources :aritcleと追記することでaritclesに関連するファイルが作成されているのがわかります。
しかし、ariticlesに関連するファイルが作成されても、コントローラがなければviewファイルやmodelファイルにはアクセスすることができません。
articlesコントローラを作成します。
$ rails g controller articles
コマンド実行前は存在しなかったarticles_controllerが作成されているのがわかります。
これでarticlesに関連するファイルへアクセスできるようになりました。
先ほどの$ rake routesを思い出してください。
新しくarticle(記事)を作成するページのURIは/articles/newだということがわかります。
では新規記事作成用のページへアクセスしてみましょう。
先ほど確認したURIをトップページのURLに追加してアクセスします。
ArticlesControllerにnewというアクション(メソッド)がないよ、というエラーが表示されています。
articles_controllerを確認すると確かに何のアクションも記述されていません。
エラーではnewというアクション(メソッド)がありませんよ、と出ていた為newアクションを追記します。
ブラウザを更新します。
このエラーはコントローラにアクセスしてくるリクエストと、コントローラの中身がかみ合っていない時に発生するエラーです。
Railsではアクション(メソッド)に対応したビューがあり、そのファイルでアクションの内容を表示することになっています。
今回はコントローラ内にはnewメソッドが存在するのに、対応するビューがなかった為上記のエラーが発生しています。
そこで、viewsフォルダ内に、new.html.erbファイルを作成します。
ファイルを作成したら、ブラウザを更新します。
new.html.erbファイル内にはまだ何の記述もない為、ブラウザには何も表示されていませんが、/articles/newというURIへのアクセスは成功しているようです。
今回のポイントはコントローラ内にアクションを作成した場合は、アクション名に対応した(アクション名と同名の)ビューファイルが必要ということです。
今回のarticles_newのページを表示するまでの流れは以下の通りです。
・routesファイルに
resources :articles
を設定する。
・設定した
resources :articles
に対応した必要なフォルダやファイルが作成される為、その中からコントローラファイルを開く。
・実行したいアクションを記述する※本チャプターでは新規記事作成のnewアクション
・コントローラファイル内のアクション名(newアクション)と同名のビューファイルを作成(viewsフォルダ内にnew.html.erb)。
$ rake rtoutes
コマンドで、new.html.erbを表示する為にURIを確認し、トップページのURLに追加して表示させる。
無料ビデオ講座のお知らせ
Skillhub [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。