TodoList: レイアウト2007年01月15日 12時17分10秒

TodoListに色々と変更を重ねてきた。色々とテーブルを増やし、各関連付け等も進んでいるが、URL へのアクセスは全て、自分で直打ちしていた。これでは、流石に使いづらい。

app/views 以下に各コントローラに対してのビューが生成されている。rhtml ファイルは body の中身を作っているようだが、head などは別のところで生成されているようだ。

少し調べたら、app/views/layouts から生成されているのを突き止めた。ここで、todo.rhtml など、コントローラ名を含む rhtml ファイルがあり、各コントローラに対して呼ばれるようだ。コントローラ名.rthml が無く、application.rhtml があると application.rhtml が読み込まれる。


% ls app/views/layouts
organization.rhtml
todo.rhtml

と二つのファイルがあったが、どかして application.rhtml を作った。

% cat application.rhtml
<html>
<head>
  <title>Application: <%= controller.action_name %></title>
  <%= stylesheet_link_tag 'scaffold' %>
</head>
<body>

<p>
  <%= link_to 'Home',
    {:controller => 'user', :action => 'home'} %>

  <%= link_if_authorized 'Todo',
    {:controller => 'todo', :action => 'list'} %>
                                   
  <%= link_if_authorized 'Organizations',
    {:controller => 'organization', :action => 'list'} %>
 
 
<p style="color: green"><%= flash[:notice] %></p>
 
<%= yield  %>
 
</body>
</html>

もし、ログインしていたら、Todo と Organization の list ページにいけるようにリンクを作成。user_engine を利用しているので、link_if_authorized を使い、リンクを表示するべきかを判定する。

データを更新したときに表示される緑色の文字は、このページで出力されていたのも判明した。

前回次回