Ruby on rails 使用Restangular从Rails获取嵌套资源,使用AngularJS从ui路由器获取嵌套资源

Ruby on rails 使用Restangular从Rails获取嵌套资源,使用AngularJS从ui路由器获取嵌套资源,ruby-on-rails,angularjs,restangular,angular-ui-router,Ruby On Rails,Angularjs,Restangular,Angular Ui Router,这里有一个奇怪的例子: 我在AngularJS中使用带Restangular的ui.router,当我想要获得特定资源时,我可以: Restangular.one('books', $stateParams.id) 然后在rails中: @book = Book.find( params[:id] ) 这就行了 " 但如果我使用: @book = Book.where(id: params[:id]) 那不行 这与rails中的params和$stateparms以及AngularJS如何

这里有一个奇怪的例子:

我在AngularJS中使用带Restangular的ui.router,当我想要获得特定资源时,我可以:

Restangular.one('books', $stateParams.id)
然后在rails中:

@book = Book.find( params[:id] )
这就行了

"

但如果我使用:

@book = Book.where(id: params[:id])
那不行

这与rails中的params和$stateparms以及AngularJS如何与rails对话有关,但我不确定到底发生了什么。我想说:

@pages = Page.where(book_id: params[:id]) 

因此,我可以访问第2本书的页面或其他任何内容。

要了解Restangular和Rails之间的交互,请运行rake路由并查找如下路由:

api/v1/books/1/pages
如果不存在,则为API设置
routes.rb

namespace :api do
  namespace :v1 do
    resources :books do
      resources :pages
    end 
  end
end
然后使用Rails调试器(
byebug
on Rails 4)在Pages控制器中放置断点并查看参数。还可以使用chrome中的JS调试器查看返回的内容。 在Rails日志中查看Restangular使用的路由


如果调用pages controller的index方法,则可以检查book_id并搜索具有该book_id的页面,然后使用它们进行响应

Book.where(id:params[:id])。首先
hmmm,它对父资源有效。。。但是我真的需要获取所有嵌套的资源,在本例中是属于某本书的所有页面。