2

我正在尝试使用 Rails 和 Backbone.js 创建一个新应用程序,但是有很多嵌套关系使它变得相当困难。

在 Rails 方面,我使用成分和过敏原之间的 HABTM 关系。我正在尝试获取与一系列过敏原相关的成分。计划是使用数组查询 Allergens 表,获取它们的 id,然后根据 AllergensIngredients 表查询它以获取成分 id。

路由嵌套如下:

  resources :ingredients do
    resources :allergens
  end

网址为“/ingredients/:ingredient_id/allergens”。它非常适合 Rails。在 Backbone 方面,我尝试使用 Collections 来获取带有 url '/allergens' 的过敏原,但根据我的 Rails 路由(路由'/allergens' 不存在),这被拒绝了。所以,我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 的任何干扰?非常感谢你的帮助!

4

1 回答 1

1

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

于 2012-11-20T18:23:48.690 回答