2017-10-13 56 views
0

我在我的網站上建立了一個畫廊,並且在我的控制器中遇到了路由和相關操作。Rails的路由,索引和顯示是一樣的嗎?

基本上我有三個型號:CollectionAlbumPhoto

一個Collection罐裝食品等Collection S或Albums但不能同時使用。然後Album包含Photos。

在我的根目錄/gallery路徑我路由到索引視圖。這會傳遞一個具有nil parent_id集合並顯示視圖的集合列表。一切都很好。

現在,我想鏈接這些集合標題,以便集合的id被傳回。此時,我通常需要使用「gallery_collection_path」的鏈接幫助器,但它將指向show view。在我的情況下,它看起來像索引和顯示視圖是相同的,直到我有一個相冊的集合,然後我會在相冊索引視圖。

我陷入困境的地方是如何在我的路線文件中構造這個以及集合名稱上的link_to應該是什麼樣子。

目前在我routes.rb文件我有:

namespace :gallery do 
    get 'collections/:collection_id', to: 'collections#index' 
    root to: 'collections#index' 
    end 

但我不太認爲這是正確的。我試圖用url_for產生像這樣的網址:

<%= link_to collection.title, url_for(['gallery', 'collections', collection.id]) %>

,但我不斷收到以下錯誤:

undefined method to_model」 71:Fixnum`

任何人都可以可能把我推向正確的方向?

回答

0
# config/routes.rb 
namespace :gallery do 
    resources :collections, only: [:index, :show] do 
     resources :albums, only: [:show] 
    end 
end 

你也可以使用網址助手: 指數:gallery_collections_path, gallery_collections_url 顯示:gallery_collection_path(id), gallery_collection_url(id)

而對於helper方法url_for,你可以參考這裏:https://apidock.com/rails/ActionController/Base/url_for

編輯: 如果您需要要分離邏輯並查看相冊和收藏集,您需要定義相冊控制器並設置路由如上。

+0

謝謝,但是當我到相冊時呢?我使用什麼操作?還有什麼關於show動作是嵌套集合的索引動作的問題? – rctneil

+0

通過上面的路由配置,show action將不會與index操作相同。但是用你的配置get'collections /:collection_id',到:'collections#index'',show action將被路由到索引操作。 – ninjarails

+0

是的,但是一張專輯可能嵌套在多個子集合中。頂級集合顯然會被路由到索引到所有其他頂級集合,但是是第二級集合,這是要去索引(顯示那裏的所有集合或顯示,因爲我們正在顯示該集合。這是我的問題? – rctneil