【问题标题】:Backbone.js + Rails 3 urls and collections with nested routesBackbone.js + Rails 3 urls 和带有嵌套路由的集合
【发布时间】:2012-11-19 22:58:55
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2011-09-07
      • 2018-03-15
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多