ERBを部品化する
ERBを部品化する
以前、HTMLソースをINCLUDEする方法を開発してみましたが
(静的なHtmlをインクルードする)
今回はERBをインクルードする方法です。
入力フォームや、エラー表示の出力を行う為に、ERBの中で
<%= render :partial => 'form', :locals => { :form => form } %>
こんな記述をします。
すると"_form.html.erb"というファイルが読み込まれて
登録画面と更新画面でフォームを共通利用できたりします。
このような"render :partial"は上の例で言うと、フォームの名称など
外部からパラメーターを渡したい時に利用する方法です。
一方、例えば画面ヘッタ・フッタ、ログインバナーのような
様々な画面で利用されるような画面部品を呼び出したいような場合には
ERBのなかで下記のように記述します。
<%= render :file => '/hoge/header' %>
"app/views/hoge/header.html.erb"を画面のその箇所に取り込んでくれます。
注意点としては、この画面で必要とするコントローラー処理は
呼び出した画面のコントローラー処理に書いておく必要があります。
そこらへんは、かなりダサいので
是非ERBを取り込んだらコントローラー処理も取り込まれるような
そんな仕組みが作れればなぁと思っていますが
そんなやり方ってご存知のかたいれば教えていただけると助かります。