5. @kenn
Is it only me who think rails routes.rb is a
mess?
https://twitter.com/kenn/status/184076612504006656
@miyagawa
config/routes.rb goddamnit
https://twitter.com/miyagawa/statuses/221405166853828608
@jugyo
routes.rb 開くたびに憂鬱になる
https://twitter.com/jugyo/status/14690985107
9. 基本7アクション
index
show
new
edit
create
update
destroy
10. resources :users
$ rake routes
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
11. resources :users
GET POST PUT DELETE
/users index create - -
/users/:id show - update destroy
GET /users/new → new
GET /users/:id/edit → edit
20. Routes are unnecessary configuration.
The seven standard controller actions are legacy.
Become intimate with your URLs – don’t abstract
them away.
Decrease the distance between thought and
implementation.
Let the controller do its job.
http://peepcode.com/blog/2010/rethinking-rails-3-routes
21. His idea
# Class method and HTTP-style methods.
class ReportsController < ApplicationController
before_filter :authenticate
resource "/reports(/:id)"
get(:collection) do
end
get(:member) do |id|
end
put(:member) do |id|
end
end
23. Astaire (like Sinatra)
# Class method and HTTP-style methods.
class ReportsController < ApplicationController
before_filter :authenticate
get "/reports" do
end
get "/reports/:id" do
end
put "/reports/:id" do
end
end
25. Sinatra式の問題点
• Viewの命名規約が別途必要
{view}.html.erb どういう名前にする?
• resources のパターンを活かせない
GET POST PUT DELETE
/reports index create - -
/reports/:id show - update destroy
27. 例
resources :messages, except: [ :new ] do
post :trash, :restore, on: :member
resources :image_attachments, only: :index
end
https://github.com/rails/routing_concerns
28. resources :messages, except: [ :new ] do
post :trash, :restore, on: :member
resources :image_attachments, only: :index
end
resources :messages, except: [ :new ] do
member do
put :trashed
delete :trashed
end
resources :image_attachments, only: :index
end
29. resources :messages, except: [ :new ] do
member do
put :trashed
delete :trashed
end
resources :image_attachments, only: :index
end
※ちょっと意味が変わる
resources :messages, except: [ :new ] do
resource :trashed, only: [:create, :destroy]
resources :image_attachments, only: :index
end
# “partial” option does not exist in fact
resources :messages, except: [ :new ], partial: [:trashed] do
resources :image_attachments, only: :index
end