この記事ではmacOS Catalina10.15.6にインストールしたRuby 2.6.5を使っています。
redirect_toメソッド
- __redirect_to → ルーティング → コントローラー → ビュー__の順番で動きます。
- 新しいリクエストが送信された時と同じ経路ですね。
- 元のインスタンス変数の値が__上書き__されます。
redirect_to リダイレクト先のパス
renderメソッド
- __render → ビュー__の順番で動きます。
- 新しいリクエストはなく、__そのままビューファイルに直行__です。
- コントローラーのアクションを通らないのでインスタンス変数は上書きされません。
- フォームに__入力した情報を保持したまま__ビューファイルに戻ってくれます。
render :アクション名
redirect_toとrenderの違い
__ルーティングとコントローラーを通って情報が更新されるかどうか__です。
#renderメソッドの使い方色々
上記の使い方意外にもrender
ではい様々なビューを出力できます。
###別のコントローラのアクションテンプレートを出力する
-
render
メソッドで行うことができます。 - 以下のように
app/views
を起点とするパスを指定するとビューファイルを出力できます。
render "items/show"
###任意のファイルを出力する
- 絶対パスを用いることでアプリケーションディレクトリ外のファイルを出力できます。
render "/Users/k/projects/test/app/views/books/index.html.erb"
###テキストを出力
-
:plain
オプションでテキストをそのまま出力します。 -
:html
オプションでHTML文字列を出力します。
render plain: "text"
render html: helpers.tag('Hello')