Archive for August, 2007
Four Days on Rails by NetBeans – Day 2
Day 1に引き続き、Four Days on Rails(http://rails.homelinux.org/)のDay 2をNetBeansのRuby Packを使って試してみました。
- Scaffold Codeを自動生成させる
- Projectsウィンドウへ移動 -> ToDoプロジェクトで右クリック -> Generate…を選択 -> Generate: scaffoldを選択 -> ArgumentsにCategoryと入力 -> OK

- 以上の操作で次のようにコードが自動生成れます。

- Projectsウィンドウ -> ToDoプロジェクト -> Controllers -> categories_controller.rbを開くと自動生成されたコードがこのように表示されます。

- オリジナルのFour Days on Railsよりもここで使っているRailsなどのバージョンのほうが新しいので、自動生成されたファイルの中身がところどころ違います。
- ※ ToDoプロジェクトのView, categories以下に生成されたnew.rhtml, edit.rhtmlはNetBeansではSyntaxエラーになってしまう行がありますが、実際にはSyntaxエラーではなく、正しく動作します。rakeのバージョンが0.7.2だったときにはまったく同じコードでもエラーにならなかったのですが、0.7.3にバージョンアップされてからエラーが報告されるようになりました。

- 自動生成されたScaffold CodeのControllerを修正する
- ・Categoryをアルファベット順に表示する
- Projectsウィンドウ->ToDoプロジェクト->Controllers-> categories_controller.rbを開いて、次のように修正します。
-
def list @category_pages, @categories = paginate :categories, :per_page => 10,
rder_by => 'category'
end 
- ・不要なshowページを無くして、listページを表示する
- 同じ、categories_controller.rbで次のように修正します。
-
def update @category = Category.find(params[:id]) if @category.update_attributes(params[:category]) flash[:notice] = 'Category was successfully updated.' redirect_to :action => 'list', :id => @category else render :action => 'edit' end end 
- http://localhost:3000/categoriesをリクエストして新しいカテゴリを追加すると、2つの修正が反映されていることがわかります。WEBrickを再起動したい場合は左側のXボタンをクリックしてサーバを停止させて、Run Main Projectボタンをクリックします。


- 自動生成されたScaffold CodeのViewを修正する
- ・flashメッセージの表示
- Categoryが更新された直後のみ、更新されたことを表示するための修正方法が”Four Days on Rails”にありますが、ここで使っているRailのバージョンが新しいためか、最初からそのような機能が盛りこまれています。ブラウザの表示を見ると緑色で”Category was successfully created.”とあります。
- ・templateとlayout間でインスタンス変数を共有させるように修正する
- headingという名前のインスタンス変数をlist.rhtml, edit.rhtml, new.rhtmlの各templateとcategories.rhtmlというファイル名のlayout間で共有するように修正します。
- Projectsウィンドウ->ToDoプロジェクト->Views-> categories -> list.rhtmlを開いて、1行目の<h1>Listing categories</h1>を削除して <% @heading = “Categories” %>のようにインスタンス変数headingを定義します。同様に、Views/categoriesフォルダにあるedit.rhtmlの1行目を<% @heading = “Edit Category” %>に、new.rhtmlの1行目を<% @heading = “New Category” %>に修正して各templateでインスタンス変数headingを定義します。



- Projectsウィンドウ->ToDoプロジェクト->Views-> layouts -> categories.rhtmlを開いて、<body>タグの下に<h1><%= @heading %></h1>を追加します。この行があるとtemplateで定義されているheading変数の値を参照して出力するようになります。このようにlayoutで参照するように修正すると、例えば、どのページのヘッディングにも同じ色を付けたい場合などは各templateで修正しなくてもlayoutファイル一ヶ所の修正で済むようになります。”Four Days on Rails”ではやっていませんが、ここではオリーブ色<h1 style=”color: olive”><%= @heading %></h1>を指定してみました。
- http://localhost:3000/categoriesをリクエストして、list, edit, newのページを表示すると見出し部分がオリーブ色になっています。



- ・各Templateのマイナーチェンジ
- “Four Days on Rails”の著者はディフォルトの日付表示が好きではないということでlist.rhtmlにRubyのメソッドstrftime()を使った修正を行っています。ただ、その修正版も見慣れない順番に並んでいるので、馴染のある”月 日,年”にしてみました。その他、著者はShowページは不要との考えで、list.rhtmlからリンクを削除しています。さらにDestroyをDeleteに変更したり、Deleteするときのメッセージを長くしてわかりやすくしたり、複数ページの表示方法をかえたりといった修正を行っています。


- list.rhtml以外にも_from.rhtml, edit.rhtml, new.rhtmlにも表示のためのマイナーチェンジが行われていますが、インスタンス変数共有のための修正以外はちょっとした修正なのでここでは試していません。
以上でDay 2は終了です。
You are currently browsing the Servlet Garden blog archives for August, 2007.