それでは自動生成したscaffoldアプリケーションに手を加えてみよう。少し考えただけでも自動生成したアプリケーションには以下のような不満点がある。

  • 表示形式が単純な表形式であり、掲示板らしくない
  • 入力チェック処理を追加したい

ここでは簡単な修正ではあるが、上記2点に対応してみることにする。

表示形式を変更する

まずはscaffoldアプリケーションの見た目から修正していこう。Railsでは画面の見た目(ビュー部分)はRHTMLで記述されている。RHTMLはHTML中にRubyコードを記述可能なテンプレートだ。Java開発者にはJSPのRuby版というとわかりやすいだろうか。

自動生成したscaffoldアプリケーションは以下のRHTMLが使用されている。これらのテンプレートを編集することでアプリケーションの見た目をカスタマイズすることができる。

図10 scaffoldアプリケーションのRHTMLファイル

このうちlist.rhtmlは記事を一覧表示する画面のテンプレートだ。モデルのメタ情報を使用して動的に表示列が追加されるようなテンプレートになっているが、これを以下のように書き換えてみよう。編集や削除のためのリンクは不要なので削除してある。コントローラ(Controllers/articles_controller.rb)の対応するメソッドも削除しておくといいだろう。

<h1>Rails掲示板</h1>

<%= link_to '新規投稿', :action => 'new' %>

<% for article in @articles %>
  <hr>
  <strong>タイトル:</strong><%=h article.title%><br>
  <strong>投稿者:</strong><%=h article.author %>
  <pre><%=h article.contents %></pre>
<% end %>

<%= link_to '前のページ', { :page => @article_pages.current.previous } if @article_pages.current.previous %>
<%= link_to '次のページ', { :page => @article_pages.current.next } if @article_pages.current.next %>

RHTMLの編集時には[CTRL]+[SPACE]でHTMLタグやRubyコードの補完機能を利用することができるので試してみてほしい。Railsのヘルパーも補完することができる。

図11 RHTMLエディタでのコード補完

一覧画面の表示は次のようになる。多少は掲示板らしくなっただろうか。

図12 修正後の掲示板