我正在尝试使用Rails和Backbone.js创建一个新的应用程序,但是有很多嵌套关系使得它变得相当困难。
在Rails方面,我使用了成分和过敏原之间的HABTM关系。我正在尝试获取与一系列过敏原相关的成分。计划是使用数组查询过敏原表,获取它们的ID,然后根据AllergensIngredients表查询该数据以获取成分ID。
路由嵌套如下:
resources :ingredients do
resources :allergens
end
将网址设为'/ ingredients /:ingredient_id / allerrgens'。它对Rails非常有用。在骨干方面,我尝试使用Collections来获取带有url'/过敏原的过敏原,但根据我的Rails路线(路线'/过敏原'不存在)被拒绝。所以,我在嵌套路由下面添加了一个独立的resources :allergens
路由。这为Backbone创建了一条可识别的路线,但问题仍然存在于我的Rails allergens_controller.rb中:
class AllergensController < ApplicationController
respond_to :html, :json
def index
respond_with(
@ingredient ||= Ingredient.find(params[:ingredient_id]),
@allergens = @ingredient.allergens,
)
end
# ...
end
因为没有id就找不到@ingredient。我尝试过使用Backbone.sync和$ .get,但那些仍然需要一个url,最终通过rails控制器。如何使用Backbone只查询数据库中的单个表,而不受Rails或URL的任何干扰?非常感谢你的帮助!
答案 0 :(得分:1)
我采取了不同的方法。我在allergens_controller中创建了一个刚刚返回Allergen.all的新动作,然后在Backbone中使用了一个AJAX get请求来返回xhr对象。不是一个优雅的解决方案,但仍然是一个修复!