嵌套的Rails资源

时间:2015-05-24 02:26:59

标签: ruby-on-rails ruby activerecord

我有一个资源Library和一个资源Books。显然,图书馆可以有很多书。像Library.first.books这样的东西很完美。

在我的routes.rb文件中,我有:

resources :libraries
resources :books

我真正希望能够做的是请求像/library/3/books这样的内容,并获取库中ID为3的所有书籍。我试过这个:

resources :libraries, :shallow => true do
  resources :books
end
resources :books

但是当我请求/library/3/books时,我得到了所有的书籍,而不仅仅是图书馆的三本书。是否有内置/简单的方法来实现这一目标?

2 个答案:

答案 0 :(得分:0)

/ library转到索引 / library / 3去展示 / library / 3 / books转到带有params [:id] = 3的书籍。你必须渲染@books = Library.find(3).books。

答案 1 :(得分:-1)

我建议你建立另一个模型作为关系模型。 然后使用:

has_many :book, through: :somemodel

它就像标记http://railscasts.com/episodes/382-tagging

一样

通过这种方式,您无需担心嵌套路由。