2013-06-27 12 views
0

我想實現這樣的功能。 所以我有產品控制器,處理產品CRUD。 而且我有類別控制器,處理類別CRUD。如何將不同的控制器名稱與其他控制器操作結合起來? Rails

我想實現的是,當我瀏覽產品展示動作,在瀏覽酒吧我可以看到這樣的URL

www.mydomainname.com/products/category_name/product_name 

在這一刻我有。

www.mydomainname.com/products/city-skid-7v3 

所以這意味着我需要結合2個控制器的路線。有人有開始的例子或建議嗎?

回答

1

你應該在你的routes.rb

namespace :products do 
    resources :categories do 
    resources :products 
    end 

    # to index products without category: 
    resources :products, only: :index 
end 

那麼你應該改變所有的地方在哪裏views/controllers你用你的路線。舉例來說,如果你有

link_to product.name, product 

,你應該將其替換爲:

link_to product.name, [:products, product.category, product] 

,因爲現在鏈接到產品的時候,你還需要指定類別的URL段。

在你products#index,您現在可以檢查是否category_id提供分別過濾器產品:

scope = if params[:category_id] 
    Category.find_by_permalink!(params[:category_id]) 
else 
    Product 
end 
@products = scope.all # add your other scopes here 
+0

以何種方式,我應該改變視圖和控制器?對不起,我還在學習。謝謝 – Edgars

+0

你目前的'routes.rb'看起來怎麼樣? –

+0

'Darbs :: Application.routes.draw做 得到 「about_us /指數」 根:到=> '回家#指數' 命名空間:做產品 資源:類別做 資源:產品 結束 結束 devise_for :admin_users,ActiveAdmin :: Devise.config ActiveAdmin.routes(個體經營) 資源:新聞 GET 「約/指數」 #得到 「聯繫人/索引」 GET 「家/索引」 匹配「/產品/搜索「=>」產品#搜索「 GET 「面板/索引」 匹配 「/聯繫人」,以 「接觸#指數」 匹配 「/家」,到: 「家#指數」 匹配 「/ about_us」,到:「about_us #index「 match」/ news「,to:」news#index「 resources:廠商 ' – Edgars

相關問題