render メソッドは、コントローラとビューで動作が違う。
Ruby on Rails の render メソッドは、コントローラとビューで動作が違う。
- ActionController::Base#render
- ActionView::Base#render
の2つは動作が異なる。
- *.rhtml やヘルパーから呼ばれるのが、ActionView の render。
- ActionView の render は、結果の文字列を返す。<%= render "..." %>
- ActionView の render に :action を指定しても何も返ってこない。
手元のソース( actionpack-1.13.3 )を見ると、 ActionView::Base#render の第一引数に指定できるのは以下のどれか。
- パスの文字列 ("path/to/template")
- 以下のキーを持つハッシュ
- :file (:file => "/path/to/template.rhtml")
- :partial (:partial => "path/to/partial")
- :inline (:inline => "<%= 2 + 3 %>")
また、ビューの方には render_to_string が存在しない。render_to_string みたいなことをしたい時に render を使う。
<%= render "shared/header" %> <%= render { :file => "C:/shared/header.rhtml" }, { :headline => "Welcome", :person => person } %>