createアクションで記事を作成する
前回はnewアクションでRESTfulな記事投稿フォーム表示機能を実装しました。今回はその投稿フォームから受け取ったデータで記事を作成するcreateアクションでの実装を行います。
連載: Rails4でRESTfulアプリケーションの7アクション+αを作る
記事作成機能のルーティング設定
まずはroutes.rbでcreateアクションのルーティング設定を行います。
と設定します。
設定してからルーティングを確認すると
$ rake routes
blog_posts POST /blog/posts(.:format) blog/posts#create
という行が出力されます。
このURIは実はindexアクションと同じなのですが、createアクションの場合はGETメソッドではなくPOSTメソッドのリクエストを受け付けるというところが違います。
このようにリクエストメソッドによって動作を変えるところがRESTの大事なポイントです。
ルーティング情報を確認すると
- Prefixは
blog_posts
で、blog_posts_path
といったヘルパーでパスを取得できる /blog/posts(.:format)
へのPOST
リクエストでアクセスできるblog_posts
コントローラのcreate
アクションを実行する
ということがわかります。
記事作成機能のコントローラ
コントローラではcreateアクションを実装します。
createアクションでは受け取ったパラメタからBlog::Postオブジェクトを作成してデータベースに保存します。
blog_post_paramsというメソッドはRails4のStrong Parametersという機能を使ってマスアサインメント脆弱性を回避しているのですが、詳しい説明はここでは省略します。
記事作成機能のビュー
記事作成機能にはビューは用意していません。
記事作成に成功したら記事一覧ページにリダイレクトするように、失敗したら再度記事投稿フォームを表示するようにしています。
ここまでで記事の投稿・閲覧が行えるようになりました。
次回はeditアクションでの記事編集フォーム表示を行います。