Step by Step Ruby on Rails

Ruby on Railsで実際にWebサイトを構築する手順をまとめています。

Refineryでページ単位にページパーツを指定する方法

ある特定のページのみページパーツを追加して、サイト全体と異なるレイアウトにする事が出来ます。
 
1)概要
 
例えば、ホームページは3カラムよりももっと多いカラムレイアウトになっていて、それ以外のページは2カラムレイアウトになっているサイトがあります。
 
上記のようにする場合は、サイト全体用として2カラムのレイアウトを使用し、homeページのみに個別に新しいページパーツを追加する事が出来ます。
 
2)ページ単位にページパーツを追加するには?
 
config/initializers/refinery/pages.rbで下記設定を追加します。
 
config.new_page_parts = true
 
3)動作確認
 
①ページ編集画面に反映されているか?
 
設定後、サーバーを再起動。管理画面にログインし、ページ編集画面へ。
 
編集画面の上部右側に+と-が表示されるようになり、このボタン押下によってページパーツの追加、削除が出来るようになります。
 
②ブラウザでの表示確認
 
home、showなどのビューテンプレートの内容によっては、ビューテンプレートを修整する必要があります。
 
●デフォルトの状態の場合
 
<%= render '/refinery/content_page' %>
 
この場合はこのままでも追加したページパーツの内容が表示されていました。
 
●デフォルトのビューテンプレートをオーバーライドして変更している場合
 
下記のようにページパーツを明示的に指定する形でビューテンプレートを作成している場合、追加したページパーツを表示するように変更する必要があります。
 
例えば、"右サイド"という名前でページパーツを追加した場合は、下記のように設定します。
 
$ vi app/views/refinery/pages/show.html.erb

<section id='body'>
  <%=raw @page.content_for(:body) %>
</section>
<section id='side_body'>
  <%=raw @page.content_for(:side_body) %>
</section>
<%=raw @page.content_for(:右サイド) %>