小编oli*_*nes的帖子

从MongoMapper对象中包含JSON响应中的嵌套对象

class Api::StoresController < ApplicationController  
  respond_to :json

  def index
    @stores = Store.all(:include => :products)
    respond_with @stores
  end
end
Run Code Online (Sandbox Code Playgroud)

仅返回没有产品的商店

Store.find(:all).to_json(:include => :products)
Run Code Online (Sandbox Code Playgroud)

该关联已经过测试,我可以看到控制台中的嵌套产品,例如,

Store.first.products
Run Code Online (Sandbox Code Playgroud)

将他们的产品包含在MongoMapper中的正确方法是什么?

这是我的模特:

   class Store
     include MongoMapper::Document         
     many :products, :foreign_key => :store_ids 
   end

   class Product
     include MongoMapper::Document         
     key :store_ids, Array, :typecast => 'ObjectId'
     many :stores, :in => :store_ids
   end
Run Code Online (Sandbox Code Playgroud)

UPDATE

在尝试Scott的建议时,我在Store模型中添加了以下内容:

def self.all_including_nested
  stores = []
  Store.all.each do |store|
    stores << store.to_hash
  end
end

def to_hash
  keys = self.key_names
  hash = {}
  keys.each{|k| hash[k] = self[k]}
  hash[:products] = …
Run Code Online (Sandbox Code Playgroud)

json ruby-on-rails mongomapper responders

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

如何使用Cucumber/Capybara测试Rails 3.1/HTML5必填字段?

当提交为空时,如何查看必填字段上方显示的"请填写此字段"消息?

现在我的黄瓜场景似乎完全忽略了空场,成功提交了表格.

(我正在验证字段的存在,并且在手动提交时,表单会显示消息)

html5 cucumber capybara ruby-on-rails-3.1

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

趋势算法

我正在开发各种微型论坛,由特殊用户发布一个快速(接近推文大小)的主题消息,订阅者可以使用他们自己的大小相同的消息进行响应.直截了当,没有"挖掘"或任何形式的投票,只是按时间顺序排列每个主题消息的响应.但预计会有很高的流量.

我们希望根据他们使用的响应动态标记主题消息,使用0到10的等级.

谷歌搜索趋势算法和开源社区应用程序示例已有一段时间了,到目前为止已经收集了两个有趣的参考资料,我还没有完全理解:

从第一次开始,我理解需要检查活动的斜率,并平衡两个项目之间的重量,这两个项目的活动规模差别很大.但是,我如何比较许多项目,随着时间的推移迅速增加?然后,如何将"嗡嗡声等级"中的项目从0分到10分?

第二个参考是令人着迷的,但在这一点上我的头脑.从第一遍开始,我了解到需要保持内存使用稳定,同时保留计数器并在必要时存储对项目的引用.但我还没有为我的具体用例找到合适的算法.

值得注意的是,我来自非计算机科学和非统计学背景.请耐心等待:)任何帮助和代码示例(特别是在Ruby中)将不胜感激.

ruby algorithm statistics

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

由Capybara以不同于实际应用程序发送的Formtastic复选框参数

以下formtastic表单复选框字段集:

<%= semantic_form_for @store do |f| %>
  <%= f.inputs do %>
    <%= f.input :services, :as => :check_boxes, :collection => Service.all %>  
  <% end -%>
<% end -%>
Run Code Online (Sandbox Code Playgroud)

发送错误的参数:使用Capybara进行Cucumber测试的服务,使测试失败,而实际的应用程序发送正确的应用程序,处理正常:

#cucumber steps using the boiler_plate capybara web_steps.rb:
Given a "Mail Order" service
...(steps for rest of the form)...
When I check "Mail Order" 
And I press "Create Store"
Then I should see "Store was successfully created."
And I should see "Mail Order"

#params sent by cucumber
"store"=>{"services"=>["[\"4d8247ed7f5bfd2275000004\"]"]

#params sent by app on …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails cucumber formtastic capybara

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

iOS 应用程序上的 WYSIWYG 文本编辑器小部件

是否有适用于 iOS 应用程序的类似 TinyMCE 的小部件的实现(开源或专有)?

如果没有,是否有任何参考资料、教程、食谱等,不知道如何自己动手?

wysiwyg cocoa-touch objective-c ios

5
推荐指数
2
解决办法
4614
查看次数

如何找到Dragonfly with Cucumber/Capybara生成的图像?

如何使用Cucumber/Capybara在页面上找到图像的解决方案的评论中,有人问:

我似乎无法想象如何使用Dragonfly生成的URL.它们看起来像这样:/media/BAh_some_long_string_AwIw/12_11_52_810_5x5.jpg?s=7e360000,其中5x5.jpg是我的文件名.我尝试过类似:// img [@src ="/ media//#{image}?s =*"]但它不起作用.有什么提示吗?- Ramon Tayag 2月25日凌晨 4点18分

我有一个类似的问题,只是更糟糕 - 在我的情况下,生成的图像路径甚至不包括(jpg | png | gif)文件名,它们只有这些非常长的ID:

<img src="/media/BAhbB1sHOgZmSSIdNGQ4MTEyOGU3ZjViZmQwZTQ4MDAwMDAyBjoGRVRbCDoGcDoKdGh1bWJJIg0yMDB4MjAwIwY7BlQ" />
Run Code Online (Sandbox Code Playgroud)

(使用蜻蜓和mongo/gridfs)

这些路径渲染得很好,但我无法弄清楚如何在Cucumber/Capybara步骤中找到它们:P

有任何想法吗?我查看了Dragonfly的功能,但是他们只测试了图像本身的渲染,而没有检测到它在html页面中的存在.

ruby-on-rails cucumber image-upload capybara dragonfly-gem

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

使用MongoMapper时,在编辑资源时不会检查Formtastic复选框

使用以下Store和Service模型,使用MongoMapper进行管理:

class Store
  include MongoMapper::Document         
  key :service_ids, Array, :typecast => 'ObjectId'
  many :services, :in => :service_ids
end

class Service
  include MongoMapper::Document         
  key :name, String  
  many :stores, :foreign_key => :service_ids  
end
Run Code Online (Sandbox Code Playgroud)

我有这个表格,用Formtastic完成:

<%= semantic_form_for @store, :url => admin_store_path(@store), :method => :put do |form| %>
  <%= form.input :service_ids, :label => "Select Store Services", 
                               :as => :check_boxes, 
                               :collection => Service.all %>
<% end -%>
Run Code Online (Sandbox Code Playgroud)

控制器使用Inherited Resources,编辑操作是隐式的.

使用已与之关联的服务编辑@store时,后者的复选框不会显示为已选中.

Formtastic的README警告它不正式支持MongoMapper,但它也说人们已经成功地使用了两者,我在网上看到了一些这样的例子.

我怀疑Inherited Resources也不支持它,我从Devise + Simple Form看到的,都来自同一作者,不支持MM.他们正努力在他们的宝石中使用ORM适配器,但尚未准备好AFAIK.

我已经遇到了问题,我正在重写更新操作以使其工作:

  def update
    store = Store.find(params[:id])    
    if …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails formtastic mongomapper inherited-resources

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