Skip to content

浜松rails3道場 routing編

mackato edited this page May 10, 2011 · 39 revisions

浜松Rails3道場とは、習うより慣れろ方式で、Rails3のツボを浜松のRubyist達へ伝える試みである。

Routing編

参考

前準備

練習用のRailsプロジェクトを作る。参考環境: Ruby 1.9.2, Rails 3.0.7

% rails new routing-dojo
% bundle install

Routingとは

HTTPリクエスト(URL、メソッド)を受け取って、コントローラーのアクションを呼び出す仕組み。また、パスやURLを生成し文字列によるこれらのハードコードを回避することができる。

The Rails router recognizes URLs and dispatches them to a controller’s action. It can also generate paths and URLs, avoiding the need to hardcode strings in your views.(Ruby on Rails Guides)

Routingを使う

確認用のコントローラーを生成

rails g controller catalog view

設定ファイルにrouteを追加する。

# config/routes.rb
match 'products/:id' => 'catalog#view'

Viewで使う

<% # app/views/catalog/view.html.erb %>
<%= link_to 'Product: 2', :controller => 'catalog', :action => 'view', :id => 2 %>

Controller内で呼び出す

# app/controllers/catalog_controller.rb
redirect_to :controller => 'catalog', :action => 'view', :id => 3

Routingの確認

  • サーバーを起動しブラウザで確認
  • rake routes
  • テスト

Routingのテスト

  • assert_generates, assert_recognizes, assert_routing
  • Rspec-2 for Rails-3

Default route

match ':controller(/:action(/:id(.:format)))'

Named routes

match '/login' => 'accounts#login', :as => 'login'

# Use root as a shorthand to name a route for the root path “/”.
root :to => 'blogs#index'

Pretty URLs

match '/articles/:year/:month/:day' => 'articles#find_by_id', :constraints => {
  :year       => /\d{4}/,
  :month      => /\d{1,2}/,
  :day        => /\d{1,2}/
}

Resources

...

Name Space

...

Mixed routes

...

Clone this wiki locally