bra*_*r19 1 ruby routing ruby-on-rails
当我使用路径中的方法生成控制器时,我有这样的事情:
get "vehicle_manufacturers/show"
Run Code Online (Sandbox Code Playgroud)
之后我会编写这样的代码是一个好习惯:
match 'vehicle_manufacturers/:id/' => 'vehicle_manufacturers#show', :as => :vehiclemanufacturers
Run Code Online (Sandbox Code Playgroud)
或者,是否有另一种编写此代码的方法,以便正常工作?
最佳做法是遵循Rails约定来命名和路由到您的操作.这让你说:
resources :vehicle_manufacturers
Run Code Online (Sandbox Code Playgroud)
这将自动创建路线index,new,create,show,edit,update,并delete与相应的HTTP方法和辅助名称.假设它对应于VehicleManufacturer符合ActiveModel约定的对象(如ActiveRecord,Mongoid等),url_for将自动执行Do Thing™,允许您使用表单和重定向等,而不需要额外的与路由相关的工作.
您可能只想要这些方法的子集是很常见的.那也没关系:
resources :vehicle_manufacturers, :only => [:index, :show]
Run Code Online (Sandbox Code Playgroud)
您希望支持常规CRUD方法之外的其他方法.去吧:
resources :vehicle_manufacturers, :only => [:index, :show] do
get :stock_price, :on => :member
end
Run Code Online (Sandbox Code Playgroud)
这将添加一个名为stock_price_vehicle_manufacturermapping 的路由/vehicle_manufacturers/:id/stock_price.虽然严格来说,我可能会认为股票价格是一个子资源......
关键是,尝试使用资源作为路由的基础.它使一切变得更容易.
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |