一般来说,最好在资源方面来定义你的路由,所以如果你有一个名为webblog
资源,你的路由可以只用定义:如果选中该生成的路由(
resources :weblogs
与rake routes
),你会看到,它定义了一套标准的映射,从GET
,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 /维博/ myweblog映射到方法show_myweblog
为GET请求,update_myweblog
对于PUT请求,create_myweblog
对POST请求,并destroy_myweblog
为一个DELETE请求。
另外,使用标准resources
,你可以挑选你从全套与only
选择想要的路线:
resources :weblogs, only: [:show, :edit]
有关详细信息,请参阅documentation。我希望这回答你的问题,如果不是,请提供更多关于你想在评论中做什么的细节。