如何将 Ember 应用连接到 Rails API?

How to Connect an Ember app to a Rails API?

目前在理解如何在我的本地开发环境中将 Ember 应用程序连接到 Rails API 时遇到一些问题。我对这种设置非常不熟悉,而不是 运行 纯粹的 Rails 应用程序。

所以 运行 当我 运行 使用这两个单独的应用程序时,它看起来像:

Ember app running on `localhost:4200`
Rails API running on `localhost:3000`

并且两个应用程序都在同一个目录中

Parent Directory
|
|___ API
|
|___ Ember App

当我访问两个本地主机 URL 时,两个应用程序都是 运行ning。 Rails API 似乎没问题,但是 Ember 应用程序显示默认的 "There's something wrong" 页面,下面是我在控制台收到的错误:

我希望有人能解释我的设置可能有什么问题,这导致了这个错误。

您必须记住 Ember 路线不同于 Rails API 路线。 Ember 路由在路由文件中定义,而 rails 路由在您的应用程序中定义,具体取决于您使用的是控制器还是某些 gem,例如 Grape。因此,如果您使用 Rails 应用程序中定义的某些路由访问 Ember 应用程序,它可能无法工作,因为 Ember 路由器可能不存在该路由,除非您准确映射 Rails API 路由到 Ember 路由器,几乎从来没有这种情况。

我建议您检查 Ember 路由器中有哪些可用路由。

由于您尚未在此处发布任何文件,因此应该如何设置

在 Ember 内定义具有命名空间 属性:

的应用程序适配器
export default ActiveModelAdapter.extend({
  namespace: 'api'
});

在 rails config/routes.rb 你应该有这样的东西:

namespace :api, defaults: {format: 'json'} do
  resource :companies
end

这个资源应该在app/api/companies_controller.rb

里面定义
module Api
  class CompaniesController < ActionController::Base 
    skip_before_action :verify_authenticity_token

    def index
    ...
  end
end

执行此操作后,您可以像这样启动环境:

ember 服务器 --proxy http://localhost:3000

请注意,这是由路径定义的,而不是目录内的位置。如果单独提供代理,代理也很重要。

您可以检查这个有助于合并两个的附加组件:

https://github.com/thoughtbot/ember-cli-rails

希望对您有所帮助。