おーしまブログ

プログラミングやってます

<Ruby on Rails> renderメソッド

こんにちは、おーしまです。

今回は、renderメソッドについてです。

部分テンプレートを呼び出す際などに使われていますが、
今回は私が使った場合について紹介します。


ビューファイルで使用する時と、
コントローラーで使用する時の2種類です。

1、ビューファイルで使用する

<%= render partial:"~~~~~" , locals { ~~~~ : @~~~~ } %>

このように記述します。



partial:"~~~~~" と記述することで、_~~~~~.html.erb ファイルを呼び出すことができます。

逆にいうと、部分テンプレートのファイル名は、_ から始まらなければいけません。
(例 _form.html.erb )




呼び出したい部分テンプレートファイルのディレクトリが
呼び出したいファイルと違う場合は、

<%= render partial: " ディレクトリ名 / ~~~~~ " , , locals { ~~~~ : @~~~~ } %>

という感じで、ディレクトリ名も指定しましょう。

locals { ~~~~ : @~~~~ } 部分は、部分テンプレートファイル内で、
@~~~~ を ~~~~ として扱うよ。という意味です。




また、

<%= render partial:"~~~~~" , collection: @~~~~~ %>

と記述することで、@~~~~~ の数だけ繰り返し表示させることができます。



例えば、@posts なら、テーブルに保存されている post の数だけ繰り返し、
部分テンプレートの中は、post.name などでpostのnameを表示させることができます。



2、コントローラーで使用する

def cerate
  render :new
end

このように記述すると、newアクションへ飛ばしてくれます。
(飛ばすというか、持ってくる?)

def cerate
  render "コントローラー名 / new"
end

コントローラーが違う場合は、上のようにコンローラー名も指定します。

def index
  @~~~~~ = ~~~~~~~~~~~~~~~
  render json: @~~~~~
end

上のよう記述すると、indexアクションが呼ばれると、
@~~~~~ のデータをビューファイルではなく、 json で返します。



以上

今回はここまでです。
それでは、また〜

ここはどこ おれはだれ それに近いものがあんだよ 始めようとした奴らも迷い始めてる 怖がらせないでよ そりゃ甘くはないけど まだまだ 夢見ていい世界なんでしょ {UVERwould「ハイ!問題作」}