0

我有一个 has_many :through 关系,其中提要 has_many 列表。

路线

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 两次。正确生成的路由应该是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 回答