この記事では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')