Rails / Ruby

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

記事編集フォーム表示機能のルーティング設定

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

# config/routes.rb
namespace :blog do
  resources :posts, only: [:edit]
end

と設定します。

設定してからルーティング情報を出力すると

$ rake routes
edit_blog_post GET /blog/posts/:id/edit(.:format) blog/posts#edit

となります。

確認すると

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

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

記事編集フォーム表示機能のコントローラ

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

editアクションでは編集用の記事データを取得して編集フォームを表示します。

# app/controllers/blog/posts_controller.rb
before_action :set_blog_post, only: [:edit]

def edit
end

private
  def set_blog_post
    @post = Blog::Post.find(params[:id])
  end

このset_blog_postメソッドはshowアクションの実装の時に作成したメソッドを利用します。

記事編集フォーム表示機能のビュー

editアクションのビューでは取得済みの記事データを表示します。

/ app/views/blog/posts/edit.html.slim
= form_for @post, url: blog_post_path do |f|
  = f.text_field :title
  = f.text_area :content
  = f.submit "変更する"

Railsの場合は@postオブジェクトのtitleの値を自動的にフォームに反映してくれるのでvalueを明示的に指定する必要はありません。

次は記事編集フォームから送信した記事データをupdateアクションで更新します。

関連記事