一般来说,最好根据资源来定义你的路由,所以如果你有一个名为 的资源webblog
,你的路由可以只使用:
resources :weblogs
如果您检查由此生成的路由(使用rake routes
),您将看到它定义了一组标准的映射,从、GET
和url上的操作到控制器操作:PUT
POST
DELETE
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]
有关更多详细信息,请参阅文档。我希望这能回答您的问题,如果没有,请在评论中提供有关您想要做什么的更多详细信息。