我在我的網站上建立了一個畫廊,並且在我的控制器中遇到了路由和相關操作。Rails的路由,索引和顯示是一樣的嗎?
基本上我有三個型號:Collection
,Album
和Photo
一個Collection
罐裝食品等Collection
S或Albums
但不能同時使用。然後Album
包含Photo
s。
在我的根目錄/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`
任何人都可以可能把我推向正確的方向?
謝謝,但是當我到相冊時呢?我使用什麼操作?還有什麼關於show動作是嵌套集合的索引動作的問題? – rctneil
通過上面的路由配置,show action將不會與index操作相同。但是用你的配置get'collections /:collection_id',到:'collections#index'',show action將被路由到索引操作。 – ninjarails
是的,但是一張專輯可能嵌套在多個子集合中。頂級集合顯然會被路由到索引到所有其他頂級集合,但是是第二級集合,這是要去索引(顯示那裏的所有集合或顯示,因爲我們正在顯示該集合。這是我的問題? – rctneil