标签: ember-rails

Rspec请求规范期间Rails 4中的循环依赖性错误

我在Rails 4/Ruby 2上运行了一个应用程序.前端是用Ember开发的.

运行时rake spec,我得到以下异常.它似乎只发生在Rspec功能规范中(不是在开发模式下).此外,它通常只发生在我只运行一个功能规范时; 如果我运行整个测试套件,我通常不会收到错误.

由于对Rails的这种提交而发生错误:https: //github.com/rails/rails/commit/b33700f5580b4cd85379a1dc60fa341ac4d8deb2

但是,当然,我不知道这是真正的问题还是在调用堆栈中更深层次.我知道,如果我在Rails代码中做了一个小改动而不抛出那个错误,那么一切似乎都能正常工作并且我的测试通过了.但某些地方似乎正在尝试加载LocationsController,即使它已经加载了.

非常感谢任何帮助,因为这个让我真的很难过.

  1) Locations Creating locations
     Failure/Error: Unable to find matching line from backtrace
     RuntimeError:
       Circular dependency detected while autoloading constant LocationsController
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/dependencies.rb:460:in `load_missing_constant'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/dependencies.rb:183:in `const_missing'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/inflector/methods.rb:226:in `const_get'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/inflector/methods.rb:226:in `block in constantize'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/inflector/methods.rb:224:in `each'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/inflector/methods.rb:224:in `inject'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/inflector/methods.rb:224:in `constantize'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/dependencies.rb:534:in `get'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/dependencies.rb:565:in `constantize'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/actionpack/lib/action_dispatch/routing/route_set.rb:76:in `controller_reference'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/actionpack/lib/action_dispatch/routing/route_set.rb:66:in `controller'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/actionpack/lib/action_dispatch/routing/route_set.rb:44:in `call'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/actionpack/lib/action_dispatch/journey/router.rb:71:in `block in call'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/actionpack/lib/action_dispatch/journey/router.rb:59:in `each' …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails capybara rspec-rails ruby-on-rails-4 ember-rails

15
推荐指数
1
解决办法
3717
查看次数

Ember-Rails和命名空间模板

我有一个Rails应用程序,它被命名为三个部分(几乎3个共享模型的应用程序).我希望每个命名空间部分都有自己的Ember应用程序.这些应用程序永远不会加载到相同的布局中,因此不必彼此了解任何内容.实际上,我希望尽可能将代码保持独立,以便最终真正分离应用程序.

我试图使用ember-rails gem来做到这一点.

基本上它就像这个问题: 如何使用ember-rails gem为我的HandlebarsJS模板指定替代目录?

答案有效,但我很确定使用templates_root将我限制在一个名称空间.所以我不能拥有admin.js和admin/templates命名空间以及customer.js和customer/templates命名空间.

那么有谁知道ember-rails是否会支持多个命名空间的Ember应用程序并因此呈现多个模板根?

谢谢!

ember.js ember-rails

9
推荐指数
1
解决办法
1092
查看次数

如何使用ember-rails gem为HandlebarsJS模板指定备用目录?

我有一个Rails应用程序,我在前端使用Ember.我想将与ember相关的文件在目录结构中向下移动一级,但是当我这样做时,模板不再呈现.

在应用程序的普通,vanilla,工作版本中,我的目录结构是:

./app/
  assets/
    javascripts
      application.js
      ember-app.js
      routes.js
      store.js
      models/
      controllers/
      routes/
      templates/
      views/
Run Code Online (Sandbox Code Playgroud)

with:application.js

//= require jquery
//= require jquery_ujs
//= require handlebars
//= require ember
//= require ember-data
//= require_self
//= require ember-app
App = Ember.Application.create();
Run Code Online (Sandbox Code Playgroud)

和:ember-app.js

//= require ./store
//= require_tree ./models
//= require_tree ./controllers
//= require_tree ./views
//= require_tree ./helpers
//= require_tree ./templates
//= require ./router
//= require_tree ./routes
Run Code Online (Sandbox Code Playgroud)

一切正常.但是,我想将ember-app文件和所有ember javascript代码向下移动一级,当我这样做时,模板不会渲染.(部分应用程序使用Ember,但不是整个应用程序,我正在尝试通过资产管道设置两条不同的路径.)

所需的结构是:

./app/
  assets/
    javascripts
      application.js
      embro/
        ember-app.js
        routes.js
        store.js
        models/
        controllers/
        routes/
        templates/
        views/
Run Code Online (Sandbox Code Playgroud)

with:application.js(修订版:'require …

ruby-on-rails asset-pipeline handlebars.js ember.js ember-rails

7
推荐指数
1
解决办法
2387
查看次数

与Ember,ember-data和Rails的多对多关系

我在尝试使用ember-data和rails在Ember.js中保存多对多的关系时遇到了问题.该关联在ember方面工作正常,但是当我尝试提交事务时,它将不包括提交到rails时的新关联列表.任何帮助将不胜感激,我一直在试图找到一个示例应用程序,在github上做这么简单的事情,但我似乎找不到一个.

这是我的Ember代码的一个愚蠢的版本:

App.Store = DS.Store.extend
  revision: 11
  adapter: DS.RESTAdapter.create
    url: '/api'

App.Router.map ->
  @resource 'rosters'
  @resource 'users'

App.User = DS.Model.extend
  rosters: DS.hasMany 'App.Roster'

App.Roster = DS.Model.extend
  users: DS.hasMany 'App.User'

App.RostersEditRoute = Ember.Route.extend
  setupController: (controller, model) ->
    controller.set 'users_list', App.User.find()

App.RostersEditView = Ember.View.extend
  userCheckbox: Em.Checkbox.extend
    checkedObserver: ( ->
      users = @get 'roster.users'
      if @get 'checked'
        users.addObject @get 'user'
      else
        users.removeObject @get 'user'
      @get('controller.store').commit()
    ).observes 'checked'
Run Code Online (Sandbox Code Playgroud)

编辑表格:

each user in users_list
  label.checkbox
    view view.userCheckbox rosterBinding="current_roster" userBinding="user" | #{user.full_name}
Run Code Online (Sandbox Code Playgroud)

Rails后端(使用继承资源和活动模型序列化程序宝石):

class User < …
Run Code Online (Sandbox Code Playgroud)

many-to-many has-many-through ember.js ember-data ember-rails

7
推荐指数
1
解决办法
5570
查看次数

Ember JS和Ember Rails中的嵌套路线

有人可以用非专业人的术语解释嵌套出口在ember模板中的工作方式吗?

特别是从文档中了解这一点:http: //emberjs.com/guides/routing/rendering-a-template/

"直接的父母路线没有进入主要出口..."

这意味着当前路由尝试呈现到父路由的模板中,但父路由未呈现模板,或者,如果确实如此,则父路由提供的模板未呈现到主模板中(即,默认{{outlet}}).

更具体地说,我正在尝试了解如何在我的应用程序中创建嵌套视图层次结构.它是三层深的收藏品.我想根据集合的内容创建一系列可折叠的嵌套视图.数据结构可以是树状的.

图书馆 - >每个图书馆都有很多图书 - >每本图书都有很多图书

寻找在实践中演示嵌套模板结构的说明性jsbin或代码示例.

想象一下这样的路由器:

App.Router.map(function() {

    this.resource('libraries', function() {
        this.route('new');

        this.resource('library', {path: ':library_id'}, function() {

            this.resource('books', function() {
                this.route('new');
                this.resource('book', {path: ':book_id'}, function() {

                    this.resource('pages', function() {
                        this.route('new');
                        this.resource('page', {path: ':page_id'}, function() {

                        }); // Page
                    }); // Pages

                }); // Book
            }); // Books

        }); // Library
    }); // Libraries

}); // map
Run Code Online (Sandbox Code Playgroud)

ember.js ember-rails

7
推荐指数
1
解决办法
1510
查看次数

Ember.js与Rails4:浏览器后退按钮崩溃ember应用程序

编辑:问题解决了.你需要做的就是移除turbolinks.

使用Rails4应用程序使用ember-rails 0.13.0我们遇到了无法使用浏览器后退按钮的问题.每次使用后退按钮返回上一个路径时,应用程序都会因此类错误而崩溃:

在Firefox 24.0a2上:

TypeError: Class.PrototypeMixin.applyPartial is not a function @ http://localhost:3000/assets/ember.js?body=1:11933
Run Code Online (Sandbox Code Playgroud)

在Chromium 28上:

Uncaught Error: jquery-ujs has already been loaded! jquery.js?body=1:517I 
DEBUG: ------------------------------- ember.js?body=1:364
DEBUG: Ember.VERSION : 1.0.0-rc.6.1 ember.js?body=1:364
DEBUG: Handlebars.VERSION : 1.0.0 ember.js?body=1:364
DEBUG: jQuery.VERSION : 1.10.2 ember.js?body=1:364
DEBUG: ------------------------------- 
Run Code Online (Sandbox Code Playgroud)

看起来整个应用程序堆栈再次加载,结束时没有功能代码库.无论如何,相同的应用程序与Rails3完美配合.

来自其他人的报告与ember.js以及turbolinks有关:

Cannot perform operations on a Metamorph that is not in the DOM
Run Code Online (Sandbox Code Playgroud)

ember.js turbolinks ruby-on-rails-4 ember-rails

7
推荐指数
1
解决办法
1014
查看次数

Ember路由和路轨路线

这是我自从开始研究Ember以来看到它如何与Rails一起工作的问题.

Rails有一个包含任意数量现有路由的routes.rb文件.Ember有自己独立的路线.

当路由不存在于rails中时,浏览器如何知道查找Ember路由?

rails需要将浏览器重定向到Ember似乎是合乎逻辑的,但我还没有看到在任何地方写过.

在大多数情况下,存在rails应用程序,routes.rb中的路由扮演将资源转换为api的角色,并通过URL使数据可用.

那部分很简单.我可以使用url.json查看数据

我现在正处于尝试让浏览器通过Ember路由识别单个路由(轨道中存在许多路由)的阶段.

这与显示数据无关.我只想看模板渲染.

根据Ember框架中幕后发生的事情,我觉得这条路线只是被浏览器神奇地识别出来(没有提及routes.rb中的Ember路由),但这并不是我在现实中所经历的.

我一直收到路由错误:

Started GET "/newslinks" for 127.0.0.1 at 2013-08-08 12:44:30 -0700 ActionController::RoutingError (No route matches [GET] "/newslinks"):

这是我的application.js

//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require jquery-fileupload/basic
//= require jquery-fileupload/vendor/tmpl
//= require chosen-jquery
//= require bootstrap
//= require bootstrap-notify
//= require jquery.limit-1.2.source
//= require bootstrap-switch
//= require handlebars
//= require ember
//= require ember-data
//= require_self
//= require app
Run Code Online (Sandbox Code Playgroud)

这是我的app.js:

App = Ember.Application.create({
  LOG_TRANSITIONS: true,
  ready: function() {
    console.log('App …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails-3 ember.js ember-router ember-rails

6
推荐指数
1
解决办法
1734
查看次数

Emberjs + Rails - TypeError:无法调用未定义的方法'hasOwnProperty'(无法POST到Rails DB)

我试图用Emberjs和ember-data将一条新记录发布到Rails db中; 但是我收到以下错误:

TypeError {}"无法调用方法'hasOwnProperty'未定义"

我一直在关注https://github.com/dgeb/ember_data_example的示例,并尝试使用与示例相同的概念构建我自己的应用程序.更何况,我使用过调试器; 在我的控制器中,当我在控制台中点击this.get('preLoadedData')时,它设法将我的输入提取到表单中.但是,问题是我无法将用户输入POST到Rails DB中.

代码是:

商店

DS.RESTAdapter.configure("plurals", {"company_category": "company_categories"});
  App.Adapter = DS.RESTAdapter.extend({
    bulkCommit: false
});

App.Store = DS.Store.extend({
  revision: 12,
  adapter: DS.RESTAdapter.create()
});
Run Code Online (Sandbox Code Playgroud)

模型

App.CompanyCategory = DS.Model.extend({
    category:   DS.attr("string")
});
Run Code Online (Sandbox Code Playgroud)

调节器

App.CompanyCategoriesNewController = Em.ObjectController.extend({

    startEditing: function() {
        this.transaction = this.get('store').transaction();
        this.set('model', this.transaction.createRecord(App.CompanyCategory, {}));
    },

    save: function() {
        this.transaction.commit();
        this.transaction = null;
    }
});
Run Code Online (Sandbox Code Playgroud)

在rails控制器下: -

def create
    @category = CompanyCategory.new(params[:id])
    respond_to do |format|
      if @category.save
        format.json { render json: @category, status: …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data ember-rails

5
推荐指数
1
解决办法
667
查看次数

如何使用ember-rails启用query-params-new功能

我在使用query-params-new功能时遇到问题.

我的ember版本是1.4.0-beta.2.

Ember.js通过ember-rails和ember-source宝石加载到我的rails应用程序中.

在初始化Ember应用程序之前,我打开了这样的功能.

Ember.FEATURES["query-params-new"] = true
Run Code Online (Sandbox Code Playgroud)

执行此操作后,导航到任何路径时出现以下错误.

Error while loading route: TypeError: Object [object Object] has no method 'paramsFor' at Ember.Route.Ember.Object.extend.deserialize
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?我是否需要在每条路线上定义一个paramsFor方法?

ember.js ember-rails

5
推荐指数
1
解决办法
2293
查看次数

在余烬视图的上下文之外使用ember-rails把手模板

我有一个使用ember-railsgem 的rails应用程序.

我的网站有一部分不是在ember上,但是使用其中一个通过资产管道提供的车把模板会很方便.然而,似乎出现了一些问题.具体来说,我的模板返回如下:

Ember.TEMPLATES["views/wanderlists/templates/gallery"] = Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) { helpers = helpers || Ember.Handlebars.helpers;   var self=this;


  data.buffer.push("<h1>Gallery!</h2>\n"); });
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用此模板:

Ember.TEMPLATES["views/wanderlists/templates/gallery"]({})
TypeError: Cannot read property 'buffer' of undefined
Run Code Online (Sandbox Code Playgroud)

知道为什么生成的模板会遇到麻烦吗?

ember.js ember-rails

4
推荐指数
1
解决办法
987
查看次数

在EmberJS中检测URL更改并获取URL(使用Discourse)

我正在使用基于EmberJS构建的Discourse(http://www.discourse.org/),并尝试随时观察URL的变化,例如在打开新主题时.我已经看到了观察currentPath的答案,例如: 在EmberJS 1.0.0-pre.4中检测路由转换

App.ApplicationController = Ember.Controller.extend({

  routeChanged: function(){
    // the currentPath has changed;
  }.observes('currentPath');
});
Run Code Online (Sandbox Code Playgroud)

但我正在尝试检测任何 URL更改,而不仅仅是路径更改.如该答案的评论中所述:

从例如转换/pages/1/pages/2因为路径保持不变时,此观察者不会触发 : pages.page.index

我想要做的是实际上检测那些不会被触发的上述转换observes('currentPath').沿着这些方向,如果我this.get('currentPath');在我的函数内部,我得到的东西,topic.fromParams但我实际上对URL路径感兴趣,例如/t/this-is-my-url-slug.

简单地说,我想检测应用程序的来源:

/t/this-is-my-url-slug
Run Code Online (Sandbox Code Playgroud)

/t/another-url-slug
Run Code Online (Sandbox Code Playgroud)

能够捕获路径:/t/another-url-slug

对不起,我有点像Ember n00b,我唯一的体验就是通过话语.有任何想法吗?

ember.js ember-router ember-rails discourse

4
推荐指数
1
解决办法
4446
查看次数

正确的模板名称约定在ember js camelCase vs snake_case中

我正在构建一个带有rails作为后端的ember js的应用程序(我使用的是ember-rails gem),我正在努力用正确的方法命名我的把手模板.什么是正确的惯例?例如:

我想,对于路线,/user_profiles/4/我应该把模板放在user_profiles/show.hbs右边?或者它应该是userProfile/show.hbs

对于一个简单的模板也是如此,它应该是(user_menu.hbs或者userMenu.hbs它们都适用于我).但是为了使用帮助器呈现它我需要做:

{{render 'userMenu' }}
Run Code Online (Sandbox Code Playgroud)

使用我的App.UserMenuController

那么我应该在每个地方使用camelCase还是使用snake_case?或两者(文件夹的camelCase和文件名的snake_case)

有人可以帮助我理解它,因为在ember指南中大多数都是简单的名字posts,comments所以很难理解.

ember.js ember-rails

3
推荐指数
1
解决办法
3556
查看次数

将ember-rails部署到Heroku - TypeError:无法读取未定义的属性'typeKey'

页面的一部分加载然后空白,我得到以下错误.

TypeError: Cannot read property 'typeKey' of undefined
    at Ember.Object.extend.modelFor (http://my-app.herokuapp.com/assets/manifest-docs-cbb67138a1a7e2bbc15fdbae9b24aa06.js:19:12298)
    at Ember.Object.extend.recordForId (http://my-app.herokuapp.com/assets/manifest-docs-cbb67138a1a7e2bbc15fdbae9b24aa06.js:19:8860)
    at s (http://my-app.herokuapp.com/assets/manifest-docs-cbb67138a1a7e2bbc15fdbae9b24aa06.js:19:1790)
    at http://my-app.herokuapp.com/assets/manifest-docs-cbb67138a1a7e2bbc15fdbae9b24aa06.js:19:1524
    at http://my-app.herokuapp.com/assets/manifest-docs-cbb67138a1a7e2bbc15fdbae9b24aa06.js:18:32392
    at http://my-app.herokuapp.com/assets/manifest-docs-cbb67138a1a7e2bbc15fdbae9b24aa06.js:9:22231
    at Object.l.forEach (http://my-app.herokuapp.com/assets/manifest-docs-cbb67138a1a7e2bbc15fdbae9b24aa06.js:9:21553)
    at Object.u.forEach (http://my-app.herokuapp.com/assets/manifest-docs-cbb67138a1a7e2bbc15fdbae9b24aa06.js:9:22198)
    at Function.a.reopenClass.eachRelationship (http://my-app.herokuapp.com/assets/manifest-docs-cbb67138a1a7e2bbc15fdbae9b24aa06.js:18:32368)
    at a (http://my-app.herokuapp.com/assets/manifest-docs-cbb67138a1a7e2bbc15fdbae9b24aa06.js:19:1302) manifest-docs-cbb67138a1a7e2bbc15fdbae9b24aa06.js:9n.function.n.apply.r
Run Code Online (Sandbox Code Playgroud)

这是我的模特:

# app/models/plan.js.coffee
App.Plan = DS.Model.extend
  name: DS.attr('string')
  slug: DS.attr('string')
  project: DS.belongsTo('project')
  sections: DS.hasMany('section',{async: true})

# app/models/section.js.coffee
App.Section = DS.Model.extend
  name: DS.attr('string')
  details: DS.attr('string')
  sort_order: DS.attr('number')
  plan: DS.belongsTo('plan')
  summary_of_changes: DS.attr('string')

# app/models/project.js.coffee
App.Project = DS.Model.extend
  name: DS.attr('string')
Run Code Online (Sandbox Code Playgroud)

我在跑:

DEBUG: ------------------------------- 
DEBUG: Ember      : 1.7.1+pre.c1ec09ad …
Run Code Online (Sandbox Code Playgroud)

heroku ember.js ember-rails

1
推荐指数
1
解决办法
807
查看次数