MVC連携

Viewの制約

Viewはデザインを決めるものであり、ロジック制御を含むべきではない。

RoRのビューでは、Rubyコードの埋め込みが可能だが、極力コードを埋め込むことは避ける。

例えば、Viewからクエリを発行したりしてはならない。Controllerにより予め発行しておくか、Modelで内部的に処理する必要がある。

例えば、Controllerで会員の一覧のModelインスタンスをViewに渡したとする。つまり、Controllerで、

def list
  @member = Member.find(:all)
end

としているとする。そして、Viewで、会員のスケジュールのうち最近登録した5個を表示したいとする。その場合は、Viewにスケジュールを検索するコードを書いてはならず、MemberのModelに、次のようなメソッドを追加すれば良い。

def get_schedule(limit)
  Schedule.find(:all, :conditions => "mid = #{ self.id }", :limit => limit)
end

Viewでは、このメソッドを呼び出せば良い。例としては次のようになる。

<ul>
<% for i in @member.get_schedule(10) %>
  <li><%= i.title %></li>
<% end %>
</ul>

Modelの役割

Modelは、一つのデータを定義するだけでなく、データ間の関係も定義する。

ControllerやViewで、関係するデータを取り出す処理を書くべきではない。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-04-02 (日) 08:43:47 (5001d)