Ruby on rails 使用Restangular从Rails获取嵌套资源,使用AngularJS从ui路由器获取嵌套资源
这里有一个奇怪的例子: 我在AngularJS中使用带Restangular的ui.router,当我想要获得特定资源时,我可以: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如何
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,它对父资源有效。。。但是我真的需要获取所有嵌套的资源,在本例中是属于某本书的所有页面。