libro
www.tuyano.com
初心者のためのRuby on Rails3入門

Modelを作ろう! (5/7)

作成:2012-02-06 08:19
更新:2012-02-16 15:33

■ControllerとViewの修正

Modelができたら、このModelControllerから利用するように内容を修正しましょう。今回は、Modelのデータを単純に表示するようなアクションを用意してみます。

まずはControllerの修正です。helos_controller.rbを下のリスト欄のように書き換えましょう。ここでは、indexアクション1つだけを用意しています。ちなみに、★マークのついた2文は、前回作ったレイアウト用のインスタンス変数ですので、使わないのであれば不要です。

ここでは、indexアクションで、Heloクラスからすべてのデータを取得しています。これは以下のように行なっています。
@helos = Helo.all
笑えるほど簡単ですね。Heloクラスの「all」を呼び出せば、もう全データが取り出せてしまうのです。では、この取り出したデータというのはどのようなものなのでしょうか。これはViewでその内容を表示している部分を見ればわかります。
<% @helos.each do |helo| %>
  <tr>
    <td><%= helo.title %></td>
    <td><%= helo.content %></td>
  </tr>
<% end %>
@helosの「each」というメソッドを呼び出しています。これは「イテレータ」というもので、配列などから順に値(オブジェクト)を取得し、doの後の変数に保管する、ということを繰り返していきます。要するに、これで「配列の全要素について何らかの処理を行う」ということができるのですね。

取り出した値は、「helo.title」と「helo.content」でそれぞれtitleとcontentの値をとり出しています。つまり@helosは、Heloインスタンスの配列だったのです。Modelクラスでは、保管するデータをそれぞれプロパティとして用意しています。ここではHeloクラスを作成する際、titlecontentという値を定義しておきましたから、これらのプロパティを調べればその値が取り出せる、というわけです。

Modelクラスにおけるデータの取得などについては次回詳しく行うとして、とりあえず「allで全データが取り出せる」ということだけ頭に入れておけばよいでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※helos_controller.rbのソースコード

# coding: utf-8

class HelosController < ApplicationController
  
 def index
    @title = "サンプルレイアウト" #★
    @header_content = "コンテンツのヘッダー" #★
    @msg = "これはコンテンツに表示されるメッセージです。"
    
    @helos = Helo.all
    
    render :layout=>"helo"
  end
  
end


※index.html.erbのソースコード

<p><%= @msg %></p>
<hr>

<table border="1">
<% @helos.each do |helo| %>
  <tr>
    <td><%= helo.title %></td>
    <td><%= helo.content %></td>
  </tr>
<% end %>
</table>
※関連コンテンツ

「初心者のためのRuby on Rails3入門」に戻る