私は自分のサイトにギャラリーを構築していて、コントローラのルーティングと関連する動作に少しばかりついています。Railsルーティング、インデックス、およびショーは同じですか?
基本的に私は三つのモデルがあります:Collection
、Album
とPhoto
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`
ができ、おそらく誰も正しい方向に私を押してください?
ありがとうございますが、アルバムを取得するとどうなりますか?私はどんな行動を取っていますか?また、ネストされたコレクションのインデックスアクションであるshowアクションの問題はどうですか? – rctneil
上記のルート設定では、showアクションはインデックスアクションと同じではありません。しかし、あなたの設定 'get 'collections /:collection_id'、 'collections#index''では、showアクションはインデックスアクションに送られます。 – ninjarails
はい、アルバムは複数のサブコレクションの中にネストすることができます。トップレベルのコレクションは、明らかに他のすべてのトップレベルコレクションへのインデックスにルーティングされますが、2番目のレベルのコレクションへは、インデックスに移動することです(そこにあるすべてのコレクションを表示するか、またはそのコレクションを表示しているときに表示する)。 ? – rctneil