Rails / Ruby

連載: Rails4でRESTfulアプリケーションの7アクション+αを作る

記事作成機能のルーティング設定

まずはroutes.rbでcreateアクションのルーティング設定を行います。

# config/routes.rb
resources :posts, only: [:create]

と設定します。

設定してからルーティングを確認すると

$ rake routes
blog_posts POST /blog/posts(.:format) blog/posts#create

という行が出力されます。

このURIは実はindexアクションと同じなのですが、createアクションの場合はGETメソッドではなくPOSTメソッドのリクエストを受け付けるというところが違います。

このようにリクエストメソッドによって動作を変えるところがRESTの大事なポイントです。

ルーティング情報を確認すると

  1. Prefixはblog_postsで、blog_posts_pathといったヘルパーでパスを取得できる
  2. /blog/posts(.:format)へのPOSTリクエストでアクセスできる
  3. blog_postsコントローラのcreateアクションを実行する

ということがわかります。

記事作成機能のコントローラ

コントローラではcreateアクションを実装します。

createアクションでは受け取ったパラメタからBlog::Postオブジェクトを作成してデータベースに保存します。

# app/controllers/blog/posts_controller.rb
def create
  @post = Blog::Post.new(blog_post_params)
  if @post.save
    flash[:success] = 'created'
    redirect_to blog_posts_path
  else
    render :new
  end
end

private
  def blog_post_params
    params.require(:blog_post).permit(:title, :content)
  end

blog_post_paramsというメソッドはRails4のStrong Parametersという機能を使ってマスアサインメント脆弱性を回避しているのですが、詳しい説明はここでは省略します。

記事作成機能のビュー

記事作成機能にはビューは用意していません。

記事作成に成功したら記事一覧ページにリダイレクトするように、失敗したら再度記事投稿フォームを表示するようにしています。

ここまでで記事の投稿・閲覧が行えるようになりました。

次回はeditアクションでの記事編集フォーム表示を行います。

関連記事