![](/img/trans.png)
[英]Rails RESTful Routes: override params[:id] or params[:model_id] defaults
[英]Rails Routes: change resource identifier path name? always use params[:model_id] instead of params[:id]
我不知道怎么問這個問題...
但我正在使用嵌套的 ROUTES,如下所示。
我喜歡知道總是可以使用params[:business_id]
找到業務 ID ,顯然除了需要我使用params[:id]
的實際業務控制器。
有沒有辦法將路由資源 id 參數更改為始終為:business_id
而不必像Business.find(params.values_at(:business_id, :id).first)
??
business_exports GET /businesses/:business_id/exports(.:format) businesses/exports#index
POST /businesses/:business_id/exports(.:format) businesses/exports#create
new_business_export GET /businesses/:business_id/exports/new(.:format) businesses/exports#new
edit_business_export GET /businesses/:business_id/exports/:id/edit(.:format) businesses/exports#edit
business_export GET /businesses/:business_id/exports/:id(.:format) businesses/exports#show
PATCH /businesses/:business_id/exports/:id(.:format) businesses/exports#update
PUT /businesses/:business_id/exports/:id(.:format) businesses/exports#update
DELETE /businesses/:business_id/exports/:id(.:format) businesses/exports#destroy
business_replenishments GET /businesses/:business_id/replenishments(.:format) businesses/replenishments#index
business_offer_prices GET /businesses/:business_id/offer_prices(.:format) businesses/offer_prices#index
POST /businesses/:business_id/offer_prices(.:format) businesses/offer_prices#create
business_unmatched_listings GET /businesses/:business_id/unmatched_listings(.:format) businesses/unmatched_listings#index
POST /businesses/:business_id/unmatched_listings(.:format) businesses/unmatched_listings#create
business_profit_loss_reports GET /businesses/:business_id/profit_loss_reports(.:format) businesses/profit_loss_reports#index
businesses GET /businesses(.:format) businesses#index
POST /businesses(.:format) businesses#create
new_business GET /businesses/new(.:format) businesses#new
edit_business GET /businesses/:id/edit(.:format) businesses#edit
business GET /businesses/:id(.:format) businesses#show
PATCH /businesses/:id(.:format) businesses#update
PUT /businesses/:id(.:format) businesses#update
DELETE /businesses/:id(.:format) businesses#destroy
如果您使用的是Rails 4+,則可以使用resources
方法中的param
選項來執行此操作
假設您的代碼看起來像
resources :businesses
您可以這樣添加一個參數
resources :businesses, param: :business_id
哪個應該產生路線
businesses GET /businesses(.:format) businesses#index
POST /businesses(.:format) businesses#create
new_business GET /businesses/new(.:format) businesses#new
edit_business GET /businesses/:business_id/edit(.:format) businesses#edit
business GET /businesses/:business_id(.:format) businesses#show
PATCH /businesses/:business_id(.:format) businesses#update
PUT /businesses/:business_id(.:format) businesses#update
DELETE /businesses/:business_id(.:format)
UPDATE
由於您使用相同的嵌套資源生成這些路線,因此必須執行以下操作
resources :businesses, param: :business_id
resources :businesses, only: [] do
resources :exports
...
end
更干凈的方式是使用member
resources :businesses, param: :business_id do
member do
resources :exports
...
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.