一般来说,最好根据资源来定义路由,因此,如果您有一个名为 webblog 的资源,则可以使用以下方式定义您的路由:
resources :weblogs
如果您检查由此生成的路由(使用rake routes),您将看到它定义了一组标准映射,从GET、PUT、POST 和DELETE 到控制器的url 操作行动:
webblogs GET /weblogs(.:format) weblogs#index
POST /weblogs(.:format) weblogs#create
new_webblog GET /weblogs/new(.:format) weblogs#new
webblog GET /weblogs/:id(.:format) weblogs#show
PUT /weblogs/:id(.:format) weblogs#update
DELETE /weblogs/:id(.:format) weblogs#destroy
这些路由将映射到标准控制器操作index、create、new、show 等。
如果出于某种原因您想不使用resources定义路由,您可以单独定义它们:
get '/weblogs' => 'weblogs#index'
get '/weblogs/new' => 'weblogs#new'
get '/weblogs/:id/edit' => 'weblogs#edit'
put '/weblogs/:id' => 'weblogs#update'
...
通过使用get、put 等定义路由,您可以将单个 URL 映射到多个控制器操作,例如像这样:
get '/weblogs/myweblog' => 'weblogs#show_myweblog'
put '/weblogs/myweblog' => 'weblogs#update_myweblog'
post '/weblogs/myweblog' => 'weblogs#create_myweblog'
destroy '/weblogs/myweblog' => 'weblogs#destroymy_weblog'
这会将 URL /weblogs/myweblog 映射到方法 show_myweblog 用于 GET 请求,update_myweblog 用于 PUT 请求,create_myweblog 用于 POST 请求,destroy_myweblog 用于 DELETE 请求。
或者,使用标准resources,您可以使用only 选项从全套路线中挑选您想要的路线:
resources :weblogs, only: [:show, :edit]
有关详细信息,请参阅documentation。我希望这能回答你的问题,如果没有,请提供更多关于你想在 cmets 中做什么的细节。