LSシステム部
Amebaでブログを始めよう!

Rails 2.0 基礎の基礎(2)

昨日の続きですね。


--app/views/tasks/index.html.erb--
<h1>Listing tasks</h1>


<table>
<tr>
<th>Task</th>
<th>Due</th>
</tr>

<% for task in @tasks %>
<tr>
<td><%=h task.task %></td>
<td><%=h task.due %></td>
<td><%= link_to 'Show', task %></td>
<td><%= link_to 'Edit', edit_task_path(task) %></td>
<td><%= link_to 'Destroy', task, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>


<%= link_to 'New task', new_task_path %>
--


このままだと英語で出力されますので、日本語に修正します。


--app/views/tasks/index.html.erb(修正後)--
<h1>タスクリスト</h1>

<table>
<tr>
<th>タスク</th>
<th>期限</th>
</tr>

<% for task in @tasks %>
<tr>
<td><%=h task.task %></td>
<td><%=h task.due %></td>
<td><%= link_to '詳細', task %></td>
<td><%= link_to '編集', edit_task_path(task) %></td>
<td><%= link_to '削除', task, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>


<%= link_to '新規登録', new_task_path %>
--


で、これだとプロジェクトを作成するたびに英語を日本語に直すことが必要になります。

ちょいと面倒なので、ちょっとRailsをいじりましょう。

以下はWindowsの場合ね。


--C:\ruby\lib\ruby\gems\1.8\gems\rails2.0.2\lib\rails_generator\generators\components\scaffold\templates--


<h1>Listing <%= plural_name %></h1>

<table>
<tr>
<% for attribute in attributes -%>
<th><%= attribute.column.human_name %></th>
<% end -%>
</tr>

<%% for <%= singular_name %> in @<%= plural_name %> %>
<tr>
<% for attribute in attributes -%>
<td><%%=h <%= singular_name %>.<%= attribute.name %> %></td>
<% end -%>
<td><%%= link_to 'Show', <%= singular_name %> %></td>
<td><%%= link_to 'Edit', edit_<%= singular_name %>_path(<%= singular_name %>) %></td>
<td><%%= link_to 'Destroy', <%= singular_name %>, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<%% end %>
</table>

<br />

<%%= link_to 'New <%= singular_name %>', new_<%= singular_name %>_path %>

--

このファイルがindex.html.erbの元となってます。

たとえば 'Show' を '詳細'とかってすればプロジェクト作成時日本語になります。

Rails 2.0 基礎の基礎(1)

ruby script/generate の実行後にできるファイルをのぞいて見よう。

データベースは、script/scaffold tasks task:string due:timestamp で作ったものとします。

まずはMVCのViewから行きます。


--app/views/tasks/index.html.erb--
<h1>Listing tasks</h1>


<table>
<tr>
<th>Task</th>
<th>Due</th>
</tr>

<% for task in @tasks %>
<tr>
<td><%=h task.task %></td>
<td><%=h task.due %></td>
<td><%= link_to 'Show', task %></td>
<td><%= link_to 'Edit', edit_task_path(task) %></td>
<td><%= link_to 'Destroy', task, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>


<%= link_to 'New task', new_task_path %>
--


えっとまずRails1.0系のrhtml とは違い erb で書かれています。

3つの書式があって、

  • <% ... %> --- Rubyスクリプト片をその場で実行
  • <%= ... %> --- 式を評価した結果をその場に挿入
  • これ以外 --- 文字列をその場に挿入

となります。


この場合、

--

<% for task in @tasks %>
:

:

<% end %>

--

ここを繰り返し処理します。

「@tasks というインスタンス変数の値をすべて取り出して処理せよ」ってことでしょうか。

でその@tasks にはいるデータは tasks テーブルの全データになります。


で次、

--

<td><%=h task.task %></td>
--

task のオブジェクトに入っている、task という変数をを抜き出して表示します。


それから、

--

<td><%= link_to 'Show', task %></td>
<td><%= link_to 'Edit', edit_task_path(task) %></td>
<td><%= link_to 'Destroy', task, :confirm => 'Are you sure?', :method => :delete %></td>
--

link_toはアンカーリンクを生成します。

「link_to 'Show', task」は「(@tasks のなかの task が)差しているデータの詳細へのリンク」という意味でしょう。


「link_to 'Edit', edit_task_path(task)」 この「edit_task_path(task)」は、taskをeditするパスへのリンクを貼るってこと。


それから、「link_to 'Destroy', task, :confirm => 'Are you sure?', :method => :delete 」ですね。

該当のデータを削除するわけですが、その前に:confirm が呼ばれます。

これは「削除してもいいですか?」という確認ですね。

で、:method => :delete が呼ばれて実際にデータが削除されます。

ここの流れはまた後日ってとこでしょうね。


ここでまた出てきた 「:」Ruby のシンボルですね。

「たのしいRuby」には、

文字列と1対1に対応する値をあらわすクラスです、

と書いてあるのですが、いまだによくわかりません。


この続きはまた明日。


Rubyのシンボル

Railsでよく出てくるシンボル。
調べてみたんだけどよくわからない。
参考

引き続き明日も調べる

初ブログ

祝初ブログ。


はじめてのWeb制作みたいな感じでやっていきたいと思います。


CSSは階層的にすること。



  • default.css(デフォルトCSSのリセット)

  • commmon.css(共通デザイン)

  • section.css(ページ別等の個別デザイン)

  • hack.css(バグのあるブラウザ用)

  • fonct.css(テキスト用)



こんな感じでしょうか。