0

フィードhas_manyがリストするhas_many:through関係があります。

ルート

resources :feeds do
  member do 
    resources :feed_lists
  end
end

私がヒットしようとしているルート:

feed_list
   DELETE /feeds/:id/feed_lists/:id(.:format)   feed_lists#destroy

次に、@ feed.listsをループすると、間違ったパスが表示されます。

feed_list_path(list, @feed) = "/feeds/41/feed_lists/41"
feed_list_path(@feed, list) = "/feeds/5/feed_lists/5"
feed_list_path [@feed, list] = "/feeds/41/5/feed_lists/41/5

明らかに私が欲しいのは

feed_list_path(list, @feed) = "/feeds/41/feed_lists/5"

これは、has_many:through関係では不可能ですか?

4

1 に答える 1

1

ルートは次のようになります。

resources :feeds do
  resources :lists
end

ルーティングの問題であるという手がかりは、生成されたルートにあります。両方のパラメーターが呼び出されるidため、同じ値が URL に 2 回挿入されます。正しく生成されたルートはfeeds/:feed_id/lists/:id(異なるパラメータに注意してください:feed_idid)。

これで、次のことができるはずです。

feed_list_path(list, @feed)  # => "/feeds/41/lists/5"
feed_list_url(list, @feed)   # => "http://yoursite/feeds/41/lists/5"
url_for [@feed, list]        # => "http://yoursite/feeds/41/lists/5"

詳細については、Rails ルーティング ガイドを参照してください。

于 2012-09-28T23:53:11.957 に答える