redirect_toとrenderの使い方の違い
この記事は私自身の整理のため記入します。1.redirect_toの種類
1-1.redirect_to "URL"
redirect_toの次にURLを使用する。
redirect_to("/sample/#{@data.id}/sample")
redirect_to("/sample/#{@data.id}/sample")
URLで直接指定する。
相対パス(..[1っ個上の階層]など)でも可。
#{@data.id}はdataテーブルのidカラムを次の処理などに渡す。(idの内容を引き継ぐ)
routes.rb
post "sample/:id/sample" => "controller名#action名"
こうすることでdata.idを引き継げる。
postとgetの違い
postは指定したページに飛びつつデータも送る。:idを使用する際に使用。(使用イメージ)
メッセージボディにデータを格納するためデータが保護される。
文字数制限:2048文字
getは指定したページに飛ぶ。(使用イメージ)
データは後ろに記述し送る。データは裸で送る。
文字数制限:なし
データを送る際はpostを使用する
1-2.redirect_to action: :アクション名
action名で指定 コントローラーを指定せず、アクション名のみを指定した場合、現在のコントローラーの該当するアクションにリダイレクトされる。1-3.redirect_to controller: :コントローラー名, action: :アクション名
コントローラーとアクションを指定する。1-4.redirect_to controller: :コントローラー名
コントローラー名で指定 アクションを指定せず、コントローラー名のみ指定した場合は、指定したコントローラーのindexアクションに飛ぶ。
2.render
使い方はredirect_toと同じ。アクションを実行せずに飛ぶ。
再実行するときや失敗時などに使用する。
3.まとめ
redirectはアクションを実行しページに飛ぶ。renderは実行せずにページを飛ぶ。
参考元
https://qiita.com/shizen-shin/items/9c470b78430c649d9c7b
https://qiita.com/ryokky59/items/bba97cbfaa899b03e071