Rails的路由,索引和显示是一样的吗?
我在我的网站上建立了一个画廊,并且在我的控制器中遇到了路由和相关操作。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`
任何人都可以可能把我推向正确的方向?
# 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
编辑: 如果您需要要分离逻辑并查看相册和收藏集,您需要定义相册控制器并设置路由如上。
谢谢,但是当我到相册时呢?我使用什么操作?还有什么关于show动作是嵌套集合的索引动作的问题? – rctneil
通过上面的路由配置,show action将不会与index操作相同。但是用你的配置get'collections /:collection_id',到:'collections#index'',show action将被路由到索引操作。 – ninjarails
是的,但是一张专辑可能嵌套在多个子集合中。顶级集合显然会被路由到索引到所有其他顶级集合,但是是第二级集合,这是要去索引(显示那里的所有集合或显示,因为我们正在显示该集合。这是我的问题? – rctneil