Controllerについて その3(render)
少し日が空きましたが、今日はrenderとredirext_toについて記事にしようと思います。
- render
まず始めにビュー内でもrenderが使われます。コントローラ内とは用途が少し違うみたいなので、今回はコントローラ内で使われる、renderメソッドについて書いていきます。
~ 主な役割 ~
- 同じコントローラ内の別のアクションのビューを表示できる。 例
def index @products = Users.all render action: :new end
他のコントローラからのビューを表示したい時はrender template: "index"
というようにtemplateオプションを利用する。
2. ビュー以外の表示 例
def hello render html: "Hello, World!" end
htmlを直接表示しています。
~ errorについて ~
二度レンダリングを行おうとするとDoubleRenderError
が発生します。
例えば、
def index render :text => 'Hello' render :new end end
テキストhello
を表示してから、newアクションに飛ぶのですが、こうするとDoubleRenderError
とブラウザに表示されます。
~ renderとredirect_toの違い ~ ここはまだまだ曖昧な部分もあるのですが、renderは同じHTTPリクエストのなかで処理をして、redirect_toはブラウザがredirect_toの後のリンクやパス先にリクエストを新たに送ることだと考えています。おそらくrails serverを見れば両者の違いが分かりやすくなるので、後日そのログをブログで紹介したいと思います。