• ブログ
  • ふぉとす
  • キーワード
  • ブックマーク
  • 写真
  • ログイン

Title

« 2007年11月04日 | 2007年11月08日 »
  • Rails2.0のインストール 2007-11-07 00:00:00

     Rails2.0のPRが出たので、いろいろと試してみました。まずはインストール。

    sudo gem install rails --source http://gems.rubyonrails.org
    

    あとは適当にrailsアプリを作って、Rails2.0PRをfreezeします。

    rails rails2_test
    rake rails:freeze:edge TAG=rel_2-0-0_PR
    

    これで vender/railsにRails2.0PRが入れられて、rails2_testアプリはここのRailsを使うようになります。

    Commentコメント(0) Pageリンク元(194) Append 268
  • 詳解 Objective-C 2.0
    メディア: 大型本
    風の大陸〈第8部〉天命の大地 (富士見ファンタジア文庫)
    メディア: 文庫
  • sexy migrationを試してみる 2007-11-07 00:00:00

     sexy migrationを試してみました(すごい名前だ)。
     migrationを以下のように書けます。

        create_table :users do |t|
          t.string :name, :email
          t.text :introduction
          t.integer :age
        end
    
    Commentコメント(0) Pageリンク元(45) Append 269
  • map.resourcesを試してみる 2007-11-07 00:00:00

    Userモデルと、index(一覧表示)、show(ひとつの表示)、new,create(新規作成)、edit,update(更新)、destroy(削除)のアクションを持つコントローラがあったとすると、config/routes.rbに

    map.resources :users
    

    と書くだけでカッコいいURIを自動で作ってくれます。その確認はrake routesコマンドでOK。

                  users GET    /users                           {:action=>"index", :controller=>"users"}
        formatted_users GET    /users.:format                   {:action=>"index", :controller=>"users"}
                        POST   /users                           {:action=>"create", :controller=>"users"}
                        POST   /users.:format                   {:action=>"create", :controller=>"users"}
               new_user GET    /users/new                       {:action=>"new", :controller=>"users"}
     formatted_new_user GET    /users/new.:format               {:action=>"new", :controller=>"users"}
              edit_user GET    /users/:id/edit                  {:action=>"edit", :controller=>"users"}
    formatted_edit_user GET    /users/:id/edit.:format          {:action=>"edit", :controller=>"users"}
                   user GET    /users/:id                       {:action=>"show", :controller=>"users"}
         formatted_user GET    /users/:id.:format               {:action=>"show", :controller=>"users"}
                        PUT    /users/:id                       {:action=>"update", :controller=>"users"}
                        PUT    /users/:id.:format               {:action=>"update", :controller=>"users"}
                        DELETE /users/:id                       {:action=>"destroy", :controller=>"users"}
                        DELETE /users/:id.:format               {:action=>"destroy", :controller=>"users"}
    

     左から、名前、メソッド、URI、実際のアクション、になります。/usersに対してGETメソッドでアクセスすると一覧表示、同じURIに対してPOSTメソッドでデータを送ると、新しいモデルオブジェクトが作成されます。/users/:idに対してGETメソッドでひとつのデータの表示、PUTメソッドで更新、DELETEメソッドで削除されます。RESTfulでカッコいい。

     さらにUserモデルに1対多でひもつくCarモデルがあった場合、config/routes.rbに

     map.resources :users, :has_many => :cars
    

    と書いてやることで、

    .....省略......
                  user_cars GET    /users/:user_id/cars                  {:action=>"index", :controller=>"cars"}
        formatted_user_cars GET    /users/:user_id/cars.:format          {:action=>"index", :controller=>"cars"}
                            POST   /users/:user_id/cars                  {:action=>"create", :controller=>"cars"}
                            POST   /users/:user_id/cars.:format          {:action=>"create", :controller=>"cars"}
               new_user_car GET    /users/:user_id/cars/new              {:action=>"new", :controller=>"cars"}
     formatted_new_user_car GET    /users/:user_id/cars/new.:format      {:action=>"new", :controller=>"cars"}
              edit_user_car GET    /users/:user_id/cars/:id/edit         {:action=>"edit", :controller=>"cars"}
    formatted_edit_user_car GET    /users/:user_id/cars/:id/edit.:format {:action=>"edit", :controller=>"cars"}
                   user_car GET    /users/:user_id/cars/:id              {:action=>"show", :controller=>"cars"}
         formatted_user_car GET    /users/:user_id/cars/:id.:format      {:action=>"show", :controller=>"cars"}
                            PUT    /users/:user_id/cars/:id              {:action=>"update", :controller=>"cars"}
                            PUT    /users/:user_id/cars/:id.:format      {:action=>"update", :controller=>"cars"}
                            DELETE /users/:user_id/cars/:id              {:action=>"destroy", :controller=>"cars"}
                            DELETE /users/:user_id/cars/:id.:format      {:action=>"destroy",  :controller=>"cars"}
    

    といったURIが作られます。

    名前つきrouteは、モデルのインスタンスを指定してあげるだけ。

    @user = User.find(1)
    user_url(@user)  #=> http://localhost:3000/users/1
    user_path(@user) #=> /users/1
    
    @car = @user.find(2)
    user_car_path(@user, @car)  #=> /users/1/cars/2
    

    さらにすごいのは、link_toとかredirect_toとかform_for

    @user = User.find(1)
    link_to(h(@user.name), @user)  #=> link_to h(@user.name), :controller => "users", :action => "show", :id => 1
    redirect_to(@user) #=> redirect_to "/users/1"
    form_for(@user)  #=> action="/users/1" method="PUT"
    
    @user = User.new
    redirect_to(@user) #=> redirect_to "/users"
    form_for(@user)  #=> action="/users" method="POST"
    

    オブジェクトの状態を見て、空のときとそうでないときとで、URIが変化するのだ。これはすごい。
     ちなみに、carsのようなhas_many状態のrouteでは、単純にオブジエクトを指定するのではなくて名前つきroutesを使用したほうがよさそう。

    Commentコメント(0) Pageリンク元(113) Append 270
« 2007年11月04日 | 2007年11月08日 »

プロフィール

おおいしつかさ

Amazon商品の一覧

人気の記事ベスト10

  • 1.apache+mod_proxy_balancer+mongrelでRailsを動かす方法
  • 2.Perlでevalを使ってみる
  • 3.バージョン管理をsubversionからgitに移行してみた
  • 4.tokyobikeのドロップハンドル化
  • 5.ubuntu8.04でデュアルディスプレイを使う
  • 6.restful_authenticationを使ってみた
  • 7.URLなど、長い英字を折り返して表示する方法
  • 8.Rspecでコントローラのspecファイルを書く
  • 9.フラグメントキャッシュをRailsで使う。
  • 10.RailsとPostfixで受信メールを処理する方法

コメント

  • ユル(プログラマが若隠居をしたら)
  • ユル(風邪ひいた)
  • ユル(バイクがへたくそになっていた)
  • おおいしつかさ(便利になって不便になる)
  • 武石(便利になって不便になる)
  • ユル(劇場版 天元突破グレンラガン)
  • ユル(フラニーとゾーイー (新潮文庫): サリンジャー, 野崎 孝: 本)

過去の記事

2006年
12月
2007年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2008年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月

キーワード一覧

ActionScript AmazonResources git javascript kaeruspoon milook NSR Objective-C Rails Ruby Ruby on Rails subversion Thin tokyobike ubuntu VAIO VAIO typeZ Waves Xen ぐりぐり カンタロー スノボー ドトール ドライブ バイク プログラミング ユルさん 執筆 日本酒 模型 真中洋嗣 自転車

Youtube

ニコニコ動画