当我使用路由中的方法生成控制器时,我有这样的事情:
get "vehicle_manufacturers/show"
之后我将编写这样的代码是一个好习惯吗:
match 'vehicle_manufacturers/:id/' => 'vehicle_manufacturers#show', :as => :vehiclemanufacturers
或者,是否有另一种编写此代码的方法,以便正常工作?
当我使用路由中的方法生成控制器时,我有这样的事情:
get "vehicle_manufacturers/show"
之后我将编写这样的代码是一个好习惯吗:
match 'vehicle_manufacturers/:id/' => 'vehicle_manufacturers#show', :as => :vehiclemanufacturers
或者,是否有另一种编写此代码的方法,以便正常工作?
遵循Rails命名和路由到您的操作的约定是最佳实践。这让你说:
resources :vehicle_manufacturers
index
这将自动为, new
, create
, show
, edit
,update
和delete
使用适当的 HTTP 方法和助手名称创建路由。假设它对应于VehicleManufacturer
符合 ActiveModel 约定(如 ActiveRecord、Mongoid 等)的对象,url_for
将自动 Do The Right Thing™,让您无需额外的路由相关工作即可使用表单和重定向等。
您可能只需要这些方法的一个子集,这很常见。这也很好:
resources :vehicle_manufacturers, :only => [:index, :show]
您希望支持常规 CRUD 方法之外的其他方法。去吧:
resources :vehicle_manufacturers, :only => [:index, :show] do
get :stock_price, :on => :member
end
这会将名为stock_price_vehicle_manufacturer
mapping 的路由添加到/vehicle_manufacturers/:id/stock_price
. 虽然,严格来说,我可能认为股票价格是一种子资源......
关键是,尝试使用资源作为路由的基础。它使一切变得更容易。