Rails路由获取和匹配

时间:2012-10-05 13:49:55

标签: ruby-on-rails ruby routing

当我使用路径中的方法生成控制器时,我有类似的东西:

get "vehicle_manufacturers/show"

这是一个好习惯,之后我会编写这样的代码:

match 'vehicle_manufacturers/:id/' => 'vehicle_manufacturers#show', :as => :vehiclemanufacturers

或者,是否有其他方式编写此代码以便正常工作?

1 个答案:

答案 0 :(得分:5)

最佳做法是按Rails conventions命名并路由到您的操作。这让你说:

resources :vehicle_manufacturers

这将自动为indexnewcreateshoweditupdate和{{1}创建路线使用适当的HTTP方法和帮助程序名称。假设它对应于符合ActiveModel约定的delete对象(如ActiveRecord,Mongoid等),VehicleManufacturer将自动执行正确的Thing™,让您使用表单和重定向等没有额外的与路由相关的工作。

您可能只想要这些方法的子集,这很常见。那也没关系:

url_for

您希望支持常规CRUD方法之外的其他方法。去吧:

resources :vehicle_manufacturers, :only => [:index, :show]

这会将名为resources :vehicle_manufacturers, :only => [:index, :show] do get :stock_price, :on => :member end 的路由添加到stock_price_vehicle_manufacturer。虽然严格来说,我可能会认为股票价格是一个子资源......

关键是,尝试使用资源作为路由的基础。它使一切变得更容易。