所以这是一个奇怪的:
我在AngularJS中使用了带有Restangular的ui.router,当我想获得一个特定的资源时,我可以这样做:
Restangular.one('books', $stateParams.id)
然后在rails:
@book = Book.find( params[:id] )
这是有效的。
但如果我使用:
@book = Book.where(id: params[:id])
不起作用。
这与rails和$ stateParams中的params有关,以及AngularJS如何与rails交谈,但我不确定究竟发生了什么。我希望能够说:
@pages = Page.where(book_id: params[:id])
所以我可以访问第2册或其他任何页面。
答案 0 :(得分:0)
要清楚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调试器(在Rails 4上byebug
)在Pages控制器中放置一个断点并查看params。还可以在chrome中使用JS调试器来查看返回的内容。
查看Rails日志以查看Restangular正在使用的路径。
如果调用了pages控制器的索引方法,您可以检查book_id并搜索具有该book_id的页面并使用它们进行响应。