小编Dav*_*ulc的帖子

使用RSpec进行测试:根据第一个子域设置区域设置

我是RSpec的新手,我无法找到如何测试以下内容:

在我的应用程序控制器(在Rails 3应用程序中)中,我将语言环境设置在之前的过滤器中,就像这样

def set_locale
  I18n.locale = ["en", Setting.locale, get_locale_from_subdomain].compact.last
end

def get_locale_from_subdomain
  locale = request.subdomain.split('.').first
  return nil unless LOCALES.include? locale
  locale
end
Run Code Online (Sandbox Code Playgroud)

所以基本上,"en.example.com"和"example.com"将具有"en"语言环境,而"fr.example.com"将语言环境设置为"fr".

我该怎么测试呢?

rspec ruby-on-rails rspec2 rspec-rails ruby-on-rails-3

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

捕获div上的滚动事件

我正在尝试捕获Backbone.Marionette.CompositeView中的滚动事件,但没有成功.

作为练习,我使用Backbone.Marionette 重写http://www.atinux.fr/backbone-books/.如您所见,当您向下滚动时,会获取并显示更多书籍(即无限滚动).但是,我无法在我的视图中捕获滚动事件.

这是我的(简化)代码:

  LibraryView = Backbone.Marionette.CompositeView.extend({
    // properties, initializer, etc.

    events: {
      'scroll': 'loadMoreBooks',
      'click': 'loadMoreBooks'
    },

    // some functions

    loadMoreBooks: function(){
      console.log("loadMoreBooks");
    }
  });
Run Code Online (Sandbox Code Playgroud)

完整的源代码可以在这里看到:https://github.com/davidsulc/backbone.marionette-atinux-books/blob/scroll/assets/javascript/app.js#L86-89

我不明白的是,"点击"事件正在被正确触发,但"滚动"事件却没有.我究竟做错了什么?


编辑:所以错误最后很简单......我将"el:#content"传递给视图的构造函数,但滚动在CSS中定义为".library".一旦我改变了我的DOM

<div id="content">
  <div class="library">
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

<div id="content" class="library"></div>
Run Code Online (Sandbox Code Playgroud)

一切正常......

backbone.js backbone-events marionette

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

迭代数组,为每个元素调用$ .ajax.返回包含所有ajax结果的数组

我刚刚开始使用JavaScript处理非平凡的事情,所以这可能很简单......

我想要完成的任务:迭代产品引用数组,为每个引用获取JSON,并返回所有产品信息的数组(具有通过引用索引的类似哈希的结构).

我尝试过的:

function fetchProductData(references){
  var product_data = new Object();
  references.forEach(function(ref){
    $.ajax({
      url: "http://localhost:3000/products/find.js?reference=" + ref,
      dataType: "jsonp",
      type: "GET",
      processData: false,
      contentType: "application/json",
      success: function(data) {
        product_data[ref] = data;
      }
    });
  });
  alert('before return: ' + product_data);
  return product_data;
};

$(document).ready(function(){
  var products = fetchProductData(references);
  alert('products : ' + products);
});
Run Code Online (Sandbox Code Playgroud)

这是我不明白的:第一次调用alert显示数组内容时,数组为空.但是,在第二次调用时,数组将填充我想要的数据.

换句话说,"products:" alert在上面的代码中显示我想要的数据.但如果我评论"返回之前:" alert,它就不再这样做了.为什么是这样?

所以我的问题是:如何让jQuery进行多次$ .ajax调用来获取产品信息,在数组中收集该信息,然后返回该数组以便在代码中的其他地方使用它?

另外,为什么变量中的数据在被引用后可以神奇地访问alert

javascript ajax jquery

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

我怎么知道elixir的CPU核心数量?

我想根据CPU的数量限制池大小.我怎么知道elixir的CPU核心数量?

erlang elixir

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