概要
- create、update、destroyアクションではビューファイルを作成しないことが多い
- そのため上記のアクションで画面遷移先を決めるために、redirect_to, renderを用いる
- 新規投稿, 編集, 削除した際は、以下のいずれかの方法で指定されたビューを表示させる
redirect_to
処理の流れ
- redirect_toがルーティングにURLを送る
- ルーティングと送られてきたURLとHTTPメソッドを照らし合わせて、どのコントローラのどのアクションを実行するかを決める
- アクションを実行する
- ビューを表示する
render
処理の流れ
- renderで定義したビューファイルを表示する
renderが裏で動いているのはたったこれだけです
違いと注意点
renderとredirect_toの大きな違いを一つあげるとすると、新たにアクションを実行するかしないかという点があります。
-
render
アクションを新たに実行しない -
redirect_to
アクションを新たに実行する
使い分け
- エラ〜メッセージを使う場合にはrenderを使う
- それ以外はredirect_toを使う
def create
@post = Post.find(post_params)
if @post.save
redirect_to post_path(@post)
else
flash.now[:notice] = "投稿できませんでした"
render :new
end
end
・
・
・