我想知道,在这种情况下,我想创建一些 Web 服务类型控制器,是否有一种方法可以“导出”允许从控制器调用的方法。我对 RoR 及其路由功能仍然很陌生,但最后,是否期望一个功能齐全的 RoR 应用程序只有数百条路由?并非我创建的每个控制器方法都属于“资源”类别。
问问题
144 次
2 回答
2
Rails 路由有多种类型——RESTful 路由只是碰巧为 Rails 资源提供本机支持的路由。请记住,可以修改事件资源路由以具有成员和集合路由:
# routes.rb
resources :products do
member do
get 'short' #=> products/:product_id/short/:id
post 'toggle' #=> products/:product_id/toggle/:id
end
collection do
get 'sold' #=> products/sold
end
end
您还可以将资源路由嵌套在其他资源路由中:
# routes.rb
resources :products do
resources :comments #=> RESTful routes patterned as products/:product_id/comments/:id/:action
resources :sales do
get 'recent', :on => :collection
end
end
另一个方便的功能是命名路由。以下路线不是资源丰富的:
# routes.rb
match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase # Creates route path akin to purchase_path(:id)
命名空间路由对于组织和可读性非常有帮助:
# routes.rb
namespace :admin do
resources :products #=> RESTful routes patterned as admin/products/:product_id/:action
end
所以,基本上,你想做的每件事都有一条路线,不管它是 RESTful/resourceful 与否。但是,是的,您需要为要向应用程序公开的每个操作编写一个路由。
于 2013-06-12T04:19:44.603 回答
2
使用该routes.rb
文件,您可以为路由以及参数化路由和嵌套路由创建路由或模式匹配。您应该在此处阅读有关此内容的更多信息。
您还可以为路由指定自己的方法名称,例如my_new_route_path
. 如果你真的想要,你可以将路由硬编码到你的 HTML 中。请不要这样做。
每个控制器操作都需要映射到它的路由。
于 2013-06-12T03:47:20.567 回答