Step by Step Ruby on Rails

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

Refineryで初期状態のビュー(home、about)テンプレートをオーバーライドする

Refineryをインストール後にデフォルトで設定されているサイトのホームページ"home"ページや"about"ページを変更する方法についてまとめました。
 
(1)aboutページ
 
1)デフォルトで表示されているaboutページの設定
 
"http://localhost:3000/about"にアクセスして表示される内容は、Refineryのpages_controller.rbのshowビューテンプレートを使用しています。
 
2)showペービューテンプレートをオーバーライドする
 
デフォルトのshowビューテンプレートはrefineryのディレクトリ内に保存されています。
オーバーライドする場合はこのファイルをappディレクトリ内にコピーします。
 
"rake refinery:override"コマンドを使ってappディレクトリ内にコピーできます。
 
$ rake refinery:override view=refinery/pages/show
identical app/views/refinery/pages/show.html.erb
 
中身は下記1行のみ。
$ more app/views/refinery/pages/show.html.erb
<%= render '/refinery/content_page' %>
 
3)@pageを使ってコンテンツを表示
 
Refineryのすべてのビューは@pageインスタンス変数を利用してコンテンツを表示する事が出来ます。
 
ここではshowビューテンプレートを下記のように変更してみます。
 
$ 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>

上記の"body"セクションと"side_body"セクションは、管理画面のページ編集画面の"Body"タグと"Side Body"タグに対応しています。
 
上記show.html.erbでこのセクションの表示を設定しています。
上記showページで'body'セクションのみ記述した場合は、編集画面で"Side Body"部に記述しても実際には表示されません。
 
(2)Homeページ
 
1)デフォルトで表示されているhomeページの設定
 
"http://localhost:3000/"にアクセスして表示される内容は、Refineryのpages_controller.rbのhomeビューテンプレートを使用しています。
 
2)homeビューテンプレートをオーバーライド
 
showビューテンプレートと同様にオーバーライドできます。
 
$ rake refinery:override view=refinery/pages/home
create app/views/refinery/pages/home.html.erb
 
$ more app/views/refinery/pages/home.html.erb
 
<%= render '/refinery/content_page' %>
 
以下、showビューテンプレートと同様に変更できます。