2017-10-13 5 views
0

私は自分のサイトにギャラリーを構築していて、コントローラのルーティングと関連する動作に少しばかりついています。Railsルーティング、インデックス、およびショーは同じですか?

基本的に私は三つのモデルがあります:CollectionAlbumPhoto

Collection缶容器の他のCollection秒またはAlbumsではなく、両方を。 Albumは、Photoを含みます。

私のルート/galleryパスでは、私はインデックスビューにルーティングします。これは、parent_idがnilで、ビューが表示されているコレクションのリストを渡します。すべての井戸と良い。

コレクションのIDを戻すように、これらのコレクションのタイトルをリンクしたいと思います。この時点では、通常、「gallery_collection_path」のリンクヘルパーを使用する必要がありますが、これは表示ビューに表示されます。私の場合、インデックスとショーの表示は、アルバムインデックスを表示するアルバムを持つコレクションに到達するまでは同じです。

ここでは、私のルートファイルでこれを構造化する方法と、コレクション名のlink_toがどのように見えるかを説明します。

現在、私が持っている私のroutes.rbファイル内:

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

しかし、私は非常にこれが正しいとは思いません。私はそうのようなURLを生成するためにurl_forを使用しようとしました:

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

が、私は次のエラーを取得しておく:71のための

undefined method to_model」:Fixnum`

ができ、おそらく誰も正しい方向に私を押してください?

答えて

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

そして、あなたはURLヘルパーを使用することができます。 インデックス:gallery_collections_path, gallery_collections_url ショー:なurl_for gallery_collection_path(id), gallery_collection_url(id)

そしてヘルパーメソッドについて、あなたはここで参照することができます:https://apidock.com/rails/ActionController/Base/url_for

編集: をあなたが必要な場合ロジックを分離してアルバムとコレクションを表示するには、上記のようにアルバムコントローラとルーティングを定義する必要があります。

+0

ありがとうございますが、アルバムを取得するとどうなりますか?私はどんな行動を取っていますか?また、ネストされたコレクションのインデックスアクションであるshowアクションの問題はどうですか? – rctneil

+0

上記のルート設定では、showアクションはインデックスアクションと同じではありません。しかし、あなたの設定 'get 'collections /:collection_id'、 'collections#index''では、showアクションはインデックスアクションに送られます。 – ninjarails

+0

はい、アルバムは複数のサブコレクションの中にネストすることができます。トップレベルのコレクションは、明らかに他のすべてのトップレベルコレクションへのインデックスにルーティングされますが、2番目のレベルのコレクションへは、インデックスに移動することです(そこにあるすべてのコレクションを表示するか、またはそのコレクションを表示しているときに表示する)。 ? – rctneil

関連する問題