showのコードを追う。
今度は個別表示(Show)へのリンクをクリックした後のコードの流れを見てみる。
コントローラsoftwares_controller.rb
def show @software = Software.find(params[:id]) ...Softwareモデルにfind(6)というメッセージを送信して、データベースsoftwaresテーブルのid=6の行を、変数@softwareに代入している。 end
ビュー
- show.rhtml
- 個別表示のページ全体を描画をする。
<% for column in Software.content_columns %> ...softwareテーブルの列タイトル情報を変数columnに入れる、列数分繰り返す。*1 <p> <b><%= column.human_name %>:</b> <%=h @software.send(column.name) %> ...「Title:Ruby」のように描画する。(列タイトル:そのデータ内容)*2 </p> <% end %> <%= link_to 'Edit', :action => 'edit', :id => @software %> | ...Editと表示して、editメソッドへのリンクを張る。 <%= link_to 'Back', :action => 'list' %> ...Backと表示して、listメソッドへのリンクを張る。
*1:for column in Software.content_columns
Software.content_columnsで、Softwareモデルにcontent_columnsメッセージを送信して、データベースのsoftwareテーブルの列情報を取得している。
3列分の情報が取得できるので、for column inの構文によって変数columnに1列ずつ情報を入れて、次のendまでの間を、3回繰り返すことになる。
*2:column.human_name、@software.send(column.name)については、list.rhtmlの解説を参照。