ユーザ用ツール

サイト用ツール


rails:routing

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
rails:routing [2008/11/25 07:56] – 外部編集 127.0.0.1rails:routing [2011/11/03 11:30] (現在) – [URLとメソッドを変える] nullpon
行 1: 行 1:
-====== RailsのURL設定 ====== +====== Routing ====== 
-URLと対応する [[action_controller|ActionController]] の設定は ''config/route.rb'' に記述する。+Railsでは、URLとActionControllerの関連付けの設定を ''config/route.rb'' に記述する。
  
 ===== 現在のURL設定を見る ===== ===== 現在のURL設定を見る =====
行 6: 行 6:
   $ rake routes   $ rake routes
  
-===== URL設定を書く ===== +====== rails3 ====== 
-''config/route.rb''ファイルを修正する+Rails2と比べて、より簡易な記述が可能になっている。 
 + 
 +===== リソース ===== 
 +Rest指向のCRUD URLが作成される 
 +<code ruby> 
 +resource :models 
 +</code> 
 + 
 +==== resource とresources ==== 
 +resourceは以下のアクションが作成される。ユーザから見て、このリソースに属するデータが単一である場合に使う。例えばシステム利用者が自分のユーザ情報を管理する場合、自分自身のユーザ情報以外は見える必要がないので、利用者から見ればユーザ情報は単一のリソースとみなせる。この場合はresourceを使う。 
 +|GET|show|/resource| 
 +|GET|new|/resource/new| 
 +|GET|edit|/resource/edit| 
 +|POST|create|/resource| 
 +|PUT|update|/resource| 
 +|DELETE|destroy|/resource| 
 + 
 +resourcesは以下のアクションが作成される。ユーザから見て、このリソースに属するデータが複数がある場合に使う。例えば管理者が、利用者のユーザ情報全体を管理する必要がある場合、こちらを使う。 
 +|GET|index|/resources| 
 +|GET|new|/resources/new| 
 +|GET|edit|/resources/:id/edit| 
 +|GET|show|/resources/:id| 
 +|POST|create|/resources| 
 +|PUT|update|/resources/:id| 
 +|DELETE|destroy|/resources/:id| 
 + 
 +==== リソース操作メソッドを減らす ==== 
 +indexとshowだけにしたいなら 
 +<code ruby> 
 +resource :models, :only => [:index, :show] 
 +</code> 
 + 
 +destroyを外すなら 
 +<code ruby> 
 +resource :models, :except => [:destroy] 
 +</code> 
 + 
 +==== リソース操作メソッドを追加 ==== 
 +例えば、モデルを検索する/models/search, 特定のモデルを有効化する /models/:id/activate というURLを追加するなら 
 +<code ruby> 
 +resource :models do 
 +  collection do 
 +    get :search 
 +  end 
 +  member do 
 +    put :activate 
 +  end 
 +end 
 +</code> 
 +search_models, activate_model というviewから呼び出せるルーティングメソッドが作成される。 
 + 
 +==== リソースのネスト ==== 
 +<code ruby> 
 +resources :aaaModels do 
 +  resources :bbbModels 
 +end 
 +</code> 
 + 
 +==== URLとメソッドを変える ==== 
 +pathでURLを変える。asでREST URLを生成するメソッド名を変える 
 + 
 +<code ruby> 
 +resources :hogefugas, :path => "moges", :as => "piyos" 
 +</code> 
 +とすると 
 +<code ruby> 
 +    piyos GET    /moges 
 +    piyos POST   /moges 
 + new_piyo GET    /moges/new 
 +edit_piyo GET    /moges/:id/edit 
 +     piyo GET    /moges/:id 
 +          PUT    /moges/:id 
 +          DELETE /moges/:id 
 +</code> 
 +というREST URLが作成される。 
 + 
 + 
 + 
 +===== その他 ===== 
 +==== match ==== 
 +URLマッチング(rails2のconnect)、/auth/login へのアクセスを AuthControllerクラスのloginメソッドにディスパッチする((RailsではRESTfulなURL設計が推奨されているのでログインURLを /auth/login としない方が良い。「ログイン=新規セッションの作成」と見なして /session/create のようにするのがRails流である))。 
 +<code ruby> 
 +match "/auth/login" => "auth#login",  :as => "login" 
 +</code> 
 +asオプションを指すると、viewにlogin_urlとlogin_pathメソッドが作成される。 
 + 
 + 
 +==== scope ==== 
 +管理ページを /admin 以下に作りたい場合などのき方。Rails2まで使っていたpath_prefixオプションは廃止された 
 +<code ruby> 
 +scope "/admin" do 
 +  resouces :models 
 +end 
 +</code> 
 + 
 +==== namespace ==== 
 +namespaceを使うとURLはscopeと同じように /namespace/controller のようになる。が、モデルからテーブル名まで何から何まで名前空間が設定される。 
 + 
 +<code ruby> 
 +namespace :admin do 
 +  resouces :models 
 +end 
 +</code> 
 + 
 +この場合、modelのテーブル名はadmin_modelsであることが期待されるし、モデルクラスはAdmin::Modelである必要がある。viewは app/views/admin/index.html.erb となる。 
 + 
 +以下のようにするとnamespace付きでscaffoldできる。 
 +<code> 
 +$ rails generate scaffold admin/model title:string enabled_from:date ... 
 +</code> 
 + 
 +==== root ==== 
 +アプリケーションのート、コントローラ名とアクション名以下のように指定する。public/index.htmlがあるとそちらが優先される 
 +<code ruby> 
 +root :to => "controller#action" 
 +</code> 
 +viewでroot_url、root_pathというメソッドを呼ぶと、アプリケーションルートへのURLが作成される。 
 + 
 + 
 + 
 +====== Rails2 ====== 
 +===== 書き方 ===== 
 +config/route.rb の記述サンプル
  
 <code ruby> <code ruby>
行 17: 行 139:
 </code> </code>
  
-書き方 
 <code ruby> <code ruby>
   # RAILS_ROOTへのアクセスを処理、root_controllerのindexメソッドが担当する   # RAILS_ROOTへのアクセスを処理、root_controllerのindexメソッドが担当する
rails/routing.1227599810.txt.gz · 最終更新: 2011/04/19 12:36 (外部編集)