簡體   English   中英

Rails在列上嵌套資源路由

[英]Rails nested resource route on column

我有一個名為Product的模型,該模型具有一個名為category的字段。 如何使用category字段為Product模型進行嵌套的資源豐富的路由?
例如:

/category1/ --> index products with 'category = category1'
/category2/13 --> show product '13' with 'category = category2'
/categories/ --> show overview of categories

您可能會做得很好:

resources :products do
  resources :categories
end

然后,您將獲得諸如new_product_category_path類的路線助手,並且可以通過/products/:id/category/:id的URL訪問您的產品類別

“ Rails”的實現方式將在product.rb: has_many :categories 為此,您需要在產品表中的category_id

並且在category.rb belongs_to :product

所有這些都假定一種產品只有一個類別。 如果不是,則必須設置一個聯接表,在這種情況下,您應該通過http://guides.rubyonrails.org/association_basics.html#the-has-many-through-查看has_many上的文檔。 協會

據我所知,您將必須手動執行每條路線

get   '/:category/',         to: "products#index"
get   '/:category/:id',      to: "products#show"
get   '/:category/new',      to: "products#new"
get   '/:category/:id/edit', to: "products#edit"
match '/:category/:id',      to: 'products#create', via: :post
match '/:category/:id',      to: 'products#update', via: [:put, :patch]
match '/:category/:id',      to: 'products#destroy', via: :delete

對於您的第一個示例/category1/將在控制器中將params[:category]設置為"category1"

對於第二個示例, /category2/13將在控制器中將params[:category]"category2"並將params[:id]為13

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM