举一个最简单的例子:
map.resource:account
1)与定义所有名称路线有多么不同 - 例如:
:map.new_account“new_account”,:controller =>“activity”,:action =>“new”
2)如何在资源定义中设置其他路由?例如,假设还有一种资源方法
:map.brand_new_action“brand_new_action”,:controller =>“activity”,:action =>“brand_new_action”
我们只是在下面添加它吗?但这似乎打败了资源的重点
答案 0 :(得分:3)
手动定义所有路线有何不同?
它没有什么不同,因为它更方便。为什么要手动定义所有路线,这可能相当繁琐。因此,常见的CRUD操作会自动映射,下面是使用联系人控制器的示例:
map.resources :contacts
... or in Rails 3 ...
resources :contacts
http_verb - action - route
GET - index - /contacts
GET - show - /contacts/5
GET - new - /contacts/new
POST - create - /contacts/create
GET - edit - /contacts/5/edit
PUT - update - /contacts/5
DELETE - destroy - /contacts/5
这些通常被称为“7个Restful Actions”,但是如果需要,您可以添加自己的自定义路线(尽管强烈建议您尽可能使用7)。
如何添加其他资源/路线?
添加其他路线很容易。首先,您要确定您是在使用集合还是特定成员,然后还要考虑该操作是创建还是更新某些内容。对于要使用PUT的更新操作,创建POST,销毁使用DELETE,其他任何东西都可能是GET。
map.resources :contacts, :collection => { :new_this_month => :get },
:member => { :make_featured_person => :put }
... or in Rails 3 ...
resources :contacts do
collection do
get 'new_this_month'
end
member do
put 'make_featured_person'
end
end
http_verb - action - route
GET - new_this_month - /contacts/new_this_month
PUT - make_featured_person - /contacts/5/make_featured_person
大多数情况下,7个Restful Actions足够多,但在某些情况下你需要自定义路线。这就是Rails处理最常见情况并使您能够处理特殊情况的原因。
答案 1 :(得分:2)
资源路由简单提供了生成控制器中最常见路由的简便方法,即创建,读取,更新和删除CRUD。这允许定制,因为这可能是人们需要的。
要向资源规范添加其他路由:
map.resources :accounts, :collection => {:administrate => :get}, :member => {:activate => :put}
:collection results in something like:
/accounts/administrate
:member likewise:
/accounts/123/activate
http://guides.rubyonrails.org/routing.html#restful-routing-the-rails-default