2017-10-13 58 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