内容へ移動
Cat Paw Software
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
•
gcr
•
mysql
•
applescript
•
trusty
•
sql
•
oracle
rails:routing
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Routing ====== Railsでは、URLとActionControllerの関連付けの設定を ''config/route.rb'' に記述する。 ===== 現在のURL設定を見る ===== 現在の設定されているURLを見る $ rake routes ====== rails3 ====== 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> ActionController::Routing::Routes.draw do |map| # 設定はこのコードブロック書く end </code> <code ruby> # RAILS_ROOTへのアクセスを処理、root_controllerのindexメソッドが担当する map.root :controller => 'root', # fooモデルに関するCRUD URLを作成する。この設定はscaffoldを作成すると自動的に追加される。 map.resources :foos # fooモデルに関するCRUD URLに加えて、fooモデルとhas_manyな関係にあるbarモデルに対応するrestfulなURLを追加する。例えば、/foos/1/bars /new、/foos/1/bars/1 のようなURLができる。 map.resources :foos, :has_many => :bars # has_oneな関係なrestful URLを追加。 例:/foos/1/bar map.resources :foos, :has_one => :bar # もっと深いhas_many、has_one ネスト # 例:GET /foos/:foo_id/bars/:bar_id/bazs/:id # GET /foos/1/bars/2/buzs/5 でアクセスするとパラメータにfoo_id 1、bar_id 2、id 5が渡され、コントローラはbazs_controller # map.resources :foos, do |foo| foo.resources :bar, has_many => bazs end # 自由に定義 # /hoge/1/image のようなURLを定義して任意のコントローラとアクションメソッドと関連付ける。 # コントローラには、このURLを生成するメソッド show_image_of_hoge_path() が追加される map.show_image_of_hoge 'hoges/:id/image', :contorller => 'hoges', :action => 'view_image' # その他コントローラ全部 '/controller名/action名' というURLでアクセス map.connect ':contoller/:action' </code>
rails/routing.txt
· 最終更新:
2011/11/03 11:30
by
nullpon
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ