Backbone.js + Rails 3个urls和具有嵌套路由的集合

时间:2012-11-19 22:58:56

标签: ruby-on-rails-3 backbone.js routes has-and-belongs-to-many nested-routes

我正在尝试使用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的任何干扰?非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我采取了不同的方法。我在allergens_controller中创建了一个刚刚返回Allergen.all的新动作,然后在Backbone中使用了一个AJAX get请求来返回xhr对象。不是一个优雅的解决方案,但仍然是一个修复!