小编Ste*_*oss的帖子

Meteor:插入失败:找不到方法

我收到insert failed: Method not found日志消息,它可能是这些线程中描述的结果:

但是,我没有看到如何.让我展示希望能够更清楚地解释的代码.我正在使用Coffeescript:

if Meteor.isClient
  @VINs = new Meteor.Collection("vins")

  scoped_vins = @VINs
  Template.vins.events =
    "click .icon-plus-sign": ->
      console.log "this is #{this}"
      realVIN = $("#your-vin").val().replace /\D/g, ''
      console.log "user id is: #{Meteor.userId()} vin is #{parseInt(realVIN)}"
      VINs.insert number: parseInt(realVIN), owner: Meteor.userId() if Meteor.userId()
      $("#your-vin").val('')
else
  @VINs = new Meteor.Collection("vins")
Run Code Online (Sandbox Code Playgroud)

我对Meteor完全是一个n00b,但我从上面提到的线程中收集的是该集合必须在客户端和服务器上可用.这不是我所做的,还是我发展咖啡失明?

谢谢!

coffeescript meteor

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

流星的平均聚合查询

好吧,仍然在我的玩具应用程序中,我想找出一组车主的里程表的平均里程数.这在客户端非常简单,但不能扩展.对?但是在服务器上,我并没有完全看到如何实现它.

问题:

  1. 你如何在服务器上实现某些东西然后在客户端上使用它?
  2. 如何使用mongo的$ avg聚合函数来利用其优化的聚合函数?
  3. 或者替代(2)如何在服务器上进行map/reduce并使其可供客户端使用?

@HubertOG的建议是使用Meteor.call,这是有意义的,我这样做:

# Client side
Template.mileage.average_miles = ->
  answer = null
  Meteor.call "average_mileage", (error, result) ->
    console.log "got average mileage result #{result}"
    answer = result
  console.log "but wait, answer = #{answer}"
  answer

# Server side
Meteor.methods average_mileage: ->
  console.log "server mileage called"
  total = count = 0
  r = Mileage.find({}).forEach (mileage) ->
    total += mileage.mileage
    count += 1
  console.log "server about to return #{total / count}"
  total / count
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但它并不是因为尽可能接近Meteor.call是异步调用,并且answer将始终为null返回.处理服务器上的东西似乎是一个常见的用例,我必须忽略一些东西.那会是什么?

谢谢!

mongodb meteor aggregation-framework

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

Capybara:如何确定存在的元素数量

我已将整个堆栈从基于Rails 3.0的项目升级到3.1.我有规格通过,但我的功能现在有点挑剔.我目前面临的问题是这一步:

Then /^I should see (\d+) menu item(?:s)? within "([^"]*)"$/ do |count, selector|
  page.find(:css, selector, :count => count.to_i)
end
Run Code Online (Sandbox Code Playgroud)

在功能本身,我可能会说:

Then I should see 5 menu items within "tr#menu_item_row"
Run Code Online (Sandbox Code Playgroud)

我收到的消息是:

Then I should see 5 menu items within "tr#menu_item_row"                                      # features/step_definitions/admin_menu_steps.rb:1
  Ambiguous match, found 5 elements matching css "tr#menu_item_row" (Capybara::Ambiguous)
  ./features/step_definitions/admin_menu_steps.rb:2:in `/^I should see (\d+) menu item(?:s)? within "([^"]*)"$/'
  features/admin_menu.feature:30:in `Then I should see 5 menu items within "tr#menu_item_row"'
Run Code Online (Sandbox Code Playgroud)

据我所知,5个元素与实际找到的5个元素相匹配.我是否将此代码编写错误或是否有重大变更?谢谢!

testing integration-testing ruby-on-rails cucumber capybara

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

使用Timecop gem for Scopes

我在Rails 3.0应用程序中指定了一个范围,如下所示:

class DrawingList < ActiveRecord::Base
  scope :active_drawings, where('start_date <= ? AND end_date >= ?', Date.today, Date.today)
end
Run Code Online (Sandbox Code Playgroud)

在我的规范中,我想做:

before do
  @list = DrawingList.create #things that include begin and end dates
end

it "doesn't find an active drawing if they are out of range" do
  pending "really need to figure out how to work timecop in the presence of scopes"
  Timecop.travel(2.days)
  puts Date.today.to_s
  DrawingList.active_drawings.first.should be_nil
end
Run Code Online (Sandbox Code Playgroud)

正如您可能想象的那样,看跌期权真的表明Date.today是两天.但是,范围是在不同的上下文中进行评估的,因此它使用旧的"今天".今天如何在Timecop可以影响的上下文中进行评估.

谢谢!

ruby rspec ruby-on-rails date

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

使用PEG解析器进行BBCode解析:pegjs还是......什么?

我有一个bbcode - > html转换器,它响应textarea中的change事件.目前,这是使用一系列正则表达式完成的,并且存在许多病理情况.我一直想在这个语法上磨铅笔,但不想进入牦牛剃须.但是......最近我开始意识到pegjs,这似乎是PEG解析器生成的一个非常完整的实现.我已经指定了大部分语法,但现在我想知道这是否适合使用完整的解析器.

我的具体问题是:

  1. 由于我的应用程序依赖于将我能够转换为HTML并将其余内容保留为原始文本,因此使用可能在语法错误上失败的解析器实现bbcode是否有意义?例如:[url=/foo/bar]click me![/url]一旦输入关闭标记上的结束括号,肯定会成功.但是在此期间用户会看到什么?使用正则表达式,我可以忽略不匹配的东西,并将其视为普通文本以用于预览目的.使用正式语法,我不知道这是否可行,因为我依赖于从解析树创建HTML以及解析失败的原因是什么?

  2. 我不清楚应该在哪里进行转换.在正式的基于lex/yacc的解析器中,我将有头文件和符号表示节点类型.在pegjs中,我得到了带有节点文本的嵌套数组.我可以将翻译后的代码作为pegjs生成的解析器的一个动作发出,但是它似乎是一种将解析器和发射器组合在一起的代码气味.但是,如果我打电话PEG.parse.parse(),我会收到这样的话:

[
       [
          "[",
          "img",
          "",
          [
             "/",
             "f",
             "o",
             "o",
             "/",
             "b",
             "a",
             "r"
          ],
          "",
          "]"
       ],
       [
          "[/",
          "img",
          "]"
       ]
    ]
Run Code Online (Sandbox Code Playgroud)

给出如下语法:

document
   = (open_tag / close_tag / new_line / text)*

open_tag
   = ("[" tag_name "="? tag_data? tag_attributes? "]")


close_tag
   = ("[/" tag_name "]") 

text
   = non_tag+

non_tag
   = [\n\[\]]

new_line
   = ("\r\n" / "\n")
Run Code Online (Sandbox Code Playgroud)

当然,我正在缩写语法,但你明白了.所以,如果你注意到,数组数组中没有上下文信息告诉我我有什么样的节点,即使解析器已经完成了这个,我还是要再次进行字符串比较.我希望在解析期间可以定义回调并使用操作来运行它们,但是网上很少有关于如何做到这一点的信息.

我吠叫错了树吗?我应该回到正则表达式扫描并忘记解析吗?

谢谢

javascript parsing bbcode peg pegjs

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

<top(必需)>'中的rspec-rails和factory girl块:未定义的方法`build'

我有一个带有FactoryGirl和rSpec的新Rails 4项目.在我的spec_helper.rb身上:

# lots of stuff
RSpec.configure do |config|
  # more stuff
  config.include FactoryGirl::Syntax::Methods
end
Run Code Online (Sandbox Code Playgroud)

我还删除了rspec/autorun此文件中的require.

一个简单的规范:

require 'spec_helper'

describe User do
  build(:user)
end
Run Code Online (Sandbox Code Playgroud)

有一个简单的工厂:

FactoryGirl.define do
  factory :user do
    email     "somename@someplace.com"
  end
end
Run Code Online (Sandbox Code Playgroud)

失败,显示以下消息.

`block in <top (required)>': undefined method `build' for #<Class:0x007fd46d0e3848> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

但是,如果我build在规范中明确限定它通过:

require 'spec_helper'

describe User do
  FactoryGirl.build(:user)
end
Run Code Online (Sandbox Code Playgroud)

我能做什么,所以我不必FactoryGirl每次都添加?

rspec ruby-on-rails factory-bot

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

使用返回字符串的Haml助手

我喜欢使用Haml助手,但多年来事情发生了一些变化.旧方法只是连接到缓冲区.这就是我所拥有的:

def confirmation_table(field)
  # Be certain that if the user is logged in, his/her email and name show
  if field.respond_to? :user
    haml_tag('tr') {
      haml_tag('th', 'Email:')
      haml_tag('td', field.user.email)
    }
    haml_tag('tr') {      
      haml_tag('th', 'Name:')
      haml_tag('td', field.user.full_name)
    }
  else
    haml_tag('tr') {
      haml_tag('th', 'User Information:')
      haml_tag('td', 'Not specified.')
    }
  end

  field.class.columns.collect{|col| col.name}.reject{|col| 
    col =~ /_at$/ || 
    col =~ /_on$/ ||
    col =~ /_id$/ ||
    col == 'id'}.each do |col|
    haml_tag('tr') {
      haml_tag('th', ActiveSupport::Inflector::humanize(col))
      haml_tag('td', typeize(field, col))
    }
  end
end
Run Code Online (Sandbox Code Playgroud)

当然,这可以在我看来简单地访问:

- confirmation_table(@f)
Run Code Online (Sandbox Code Playgroud)

但是,对我来说更有意义的是返回一个字符串.我看不出如何haml_capture …

haml ruby-on-rails

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

使用间谍进行流星测试

我正在使用Velocity与mike:mocha框架和chai断言.一切都很好,但是当我需要进行抄袭,嘲笑和间谍活动时,我遇到了一些障碍.这些不是迈克的主要特征:摩卡或柴,所以我找到了实际的流星:柴,应该/可能有间谍.

我第一次发现这是否属实是写下面的代码:

  it 'calls update when both documents are present but different', ->
    spies.create('log', console, 'log')
Run Code Online (Sandbox Code Playgroud)

这给了我:

ReferenceError: spies is not defined
    at packages/velocity:test-proxy/tests/mocha/server/charger_server_doc_spec.coffee:88:9
    at wrappedFunc (packages/mike:mocha/server.js:200:1)
    at runWithEnvironment (packages/mike:mocha/server.js:156:1)
Run Code Online (Sandbox Code Playgroud)

这对我来说意味着我误解了chai提供的实际流程:然而,我在第一个例子中展示的代码是从README中逐字复制的.

问题:有关使其运行的任何提示吗?这是一个加载订单问题吗?Github上的代码显示间谍等在此包中实现.所以我有点卡住了.

谢谢!

tdd bdd meteor chai

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

为细节和小计形成SQL查询(MySQL)

我有一个常见的SQL任务,但无法找到解决方案的明确路径.我有一个表,downloadscolumns,download_date,image_file_id,credits.我最后想要的是细节,加上credits每天结束时的小计.例如

2010-10-06 123456 5
2010-10-06 234567 20
                  25
2010-10-07 234678 15
etc.
Run Code Online (Sandbox Code Playgroud)

我可以使用SUM()GROUP BY获取每日小计,但是会喜欢一种方便的方法来获得包含正确顺序的结果集,因此我不必在客户端代码中再次扫描数据以安排带有详细信息的小计行.

mysql sql subtotal

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

创建友好的Rails URL

我对一个相当常见的问题略有不同:SEO友好的URL.我有一个PagesController,所以我的网址当前就像(使用restful routing):

/页/部分内容,标题

这很好用,但页面有层次结构,所以我需要以下内容:

/ some-content-title路由到/ pages/some-content-title

我也可以使用以下方法实现:

match '*a', :to => 'errors#routing'
Run Code Online (Sandbox Code Playgroud)

在我的routes.rb中并​​将其捕获在ErrorsController中:

class ErrorsController < ApplicationController
  def routing
    Rails.logger.debug "routing error caught looking up #{params[:a]}"
    if p = Page.find_by_slug(params[:a])
      redirect_to(:controller => 'pages', :action => 'show', :id => p)
      return
    end
    render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false
  end
end
Run Code Online (Sandbox Code Playgroud)

我的问题来自于URL的"页面/"部分所需的SEO消除.SEO-dude想要什么(这里是一个例子是关键):

/ insurance =>:controller =>'pages',:id =>'insurance'#,但地址栏中的url是/ insurance

/ insurance/car:controller =>'pages',:category =>'insurance',:id =>'car'#,但地址栏中的url是/ insurance/car

是否有一种通用的方式让他获得他的谷歌爱情并让我保持路线健全?

谢谢!

routing ruby-on-rails

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