小编jkl*_*ina的帖子

如何编写确保发送电子邮件的Rspec控制器测试?

目前在我的控制器规范中我有:

require 'spec_helper'

describe CustomerTicketsController do
  login_user

  describe "POST /create (#create)" do
    # include EmailSpec::Helpers
    # include EmailSpec::Matchers
    it "should deliver the sales alert email" do
      # expect
      customer_ticket_attributes = FactoryGirl.attributes_for(:customer_ticket)
      customer_mailer = mock(CustomerMailer)
      customer_mailer.should_receive(:deliver).
        with(CustomerTicket.new(customer_ticket_attributes))
      # when
      post :create, :customer_ticket => customer_ticket_attributes
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

在我的控制器中我有:

  # POST /customer_tickets
  # POST /customer_tickets.xml
  def create
    respond_to do |format|
      if @customer_ticket.save
        CustomerMailer.sales_alert(@customer_ticket).deliver
        format.html { redirect_to @customer_ticket, notice: 'Customer ticket was successfully created.' }
        format.xml { render xml: @customer_ticket, status: :created, location: …
Run Code Online (Sandbox Code Playgroud)

controller ruby-on-rails actionmailer rspec-rails ruby-on-rails-3

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

使用Ember(cli)如何获得等待承诺的验收测试?

在我的Ember应用程序中,我目前有一个模型具有一个findResults函数,该函数返回一个包含Google Places库以获取自动完成结果的承诺.要在我的UI中使用它,我设置了一个PromiseMixin控制器.我指示控制器观察searchText值,当更改时,我将控制器的promise值更新为findResults函数返回的promise ,但是使用新值searchText.当我在浏览器中使用应用程序时,这很好用,但是当我运行验收测试时,测试似乎在返回promise之前完成,因此测试失败.我将在下面包含相关文件.

我不知道如何告诉Ember等待测试期间解决的承诺.

应用程序/服务/谷歌自动完成,location.js

import Ember from "ember";

var googleAutocompleteLocation = Ember.Object.extend({
  placeId: null,
  description: null
});

googleAutocompleteLocation.reopenClass({
  findResults: function(query) {
    var self = this;
    var promise = new Ember.RSVP.Promise(function(resolve, reject) {
      var autocompleteService = new google.maps.places.AutocompleteService();

      return autocompleteService.getPlacePredictions({ input: query },
        function(predictions, status) {
          if (status !== google.maps.places.PlacesServiceStatus.OK) {
            Ember.run(null, reject, status);
          }
          else {
            Ember.run(null, resolve, self._decorateGoogleResults(predictions));
          }
        });
    });

    return promise;
  },

  _decorateGoogleResults: function(predictions) {
    var locations = …
Run Code Online (Sandbox Code Playgroud)

javascript ember.js

10
推荐指数
2
解决办法
6350
查看次数

在Rails 3中,我应该如何管理选择有限的模型列

在我的Rails 3应用程序中,我有许多模型,其列具有有限的选择(IE是选择框).在这些情况下,为了管理选择而创建另一个模型和与原始模型的关系似乎有些过分.

我能想到的一个选择是只创建一个选择框并在那里有选择,但这似乎不是很干.有没有人有一个很好的建议如何处理这种情况?

谢谢你的期待.

ruby-on-rails ruby-on-rails-3 drop-down-menu

9
推荐指数
2
解决办法
3979
查看次数

使用Carrierwave和Rails 3,可以使用相同的上传器很好地管理图像和非图像文件吗?

在我的Rails应用程序中,我想允许用户通过Carrierwave上传图像或非图像文件.目前Carrierwave正在处理和处理图像文件,但遗憾的是它完全丢弃了非图像文件.单个Carrierwave上传器是否有一种干净的方式来处理图像和非图像文件?

我将在下面包含我当前的上传者:

class AssetUploader < CarrierWave::Uploader::Base

  include CarrierWave::MiniMagick

  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  version :thumb do
   process :resize_to_fill => [300, 300]
  end

  version :icon do
   process :resize_to_fill => [48, 48]
  end

  def extension_white_list
    %w(jpg jpeg gif png pdf doc xls docx xlsx ppt)
  end

end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-3 carrierwave

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

在Rails 3中,使用Formtastic 2,如何用div替换内置的有序列表?

在我的Rails 3应用程序中,我使用Twitter Bootstrap作为开发内部项目管理系统的框架工作.我正在使用Formtastic来帮助我使用表单,因为它节省了大量的时间和代码.我的问题是让Formtastic代码以与Bootstrap约定相对应的方式输出表单.我已经阅读了一些我在Google上发现的项目,建议我应该修补Formtastic,但我无法成功完成.

如何自定义Formtastic的输出以在每个字段周围使用div,以便我可以使用Bootstrap?

谢谢你的期待.

formtastic ruby-on-rails-3 twitter-bootstrap

7
推荐指数
2
解决办法
1759
查看次数

最终用户的最佳方式是在Rails中指定排序顺序

我正在寻找关于从Rails应用程序的最终用户的最佳方式的建议的视图文件设置模型的"查找"方法返回的结果集的排序顺序.换句话说,我希望用户能够从选择列表中选择他们的排序顺序.

最初,我想我可以把我放在:order参数中的字符串放入,但从安全的角度来看,这似乎是一个坏主意.

我想我总是可以使用基于选择列表中的值的开关,但这看起来有点笨重.

谢谢你的期待.

sorting ruby-on-rails interface

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

Rails搜索插件和解决方案

我想在我的Rails网站上添加一个搜索框,并想知道你是否可以推荐我在指定列中进行常规搜索的解决方案.我注意到acts_as_ferret插件似乎很好,但我也在寻找其他意见.任何线索或建议将不胜感激.

谢谢你的期待!

search ruby-on-rails

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

我怎样才能让Mercurial再次推送提交?

我不知道我改变了什么并运行Ubuntu 10.10.Mercurial工作正常,然后突然间,当我今天早上开始推送提交时,我开始收到以下错误:

** unknown exception encountered, details follow
** report bug details to http://mercurial.selenic.com/bts/
** or mercurial@selenic.com
** Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) [GCC 4.4.5]
** Mercurial Distributed SCM (version 1.6.3)
** Extensions loaded: convert
Traceback (most recent call last):
  File "/usr/bin/hg", line 27, in <module>
    mercurial.dispatch.run()
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 16, in run
    sys.exit(dispatch(sys.argv[1:]))
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 34, in dispatch
    return _runcatch(u, args)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 54, in _runcatch
    return _dispatch(ui, args)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 494, in _dispatch …
Run Code Online (Sandbox Code Playgroud)

python mercurial bitbucket

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

在Rails中如何使用jquery-file-upload和CarrierWave处理多个多态文件上传?

在我的项目中,我目前有不同的模型(项目,消息等):

has_many :assets, :as => :attachable, :dependent => :destroy
Run Code Online (Sandbox Code Playgroud)

每个Asset基本上都是一个带有CarrierWave文件的模型.通常我会在父模型(Project,Message等)上使用accepted_nested_attributes,并在fields_for块中列出文件上载字段.

我的问题是,因为我正在使用带有AJAX的jQuery-File-Uploader,所以当上传文件时,父模型的表单将调用父模型的Create方法.其余的父模型字段可能尚未填写.我想也许我可以让文件上传器调用Assets控制器中的create方法,但是我会有一些如何发送父模型的类以便正确存储多态关联.

关于如何干净利落地工作的任何想法?谢谢你的期待.

polymorphism jquery ruby-on-rails ruby-on-rails-3 carrierwave

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

如何在Rails 3中使用带Ransack的范围?

在我的Widget模型中,我有以下内容:

scope :accessible_to, lambda { |user|
  if user.has_role?('admin')
    self.all
  else
    roles = user.roles
    role_ids = []
    roles.each { |r| role_ids << r.id }
    self.joins(:widget_assignments).where('widget_assignments.role_id' => role_ids)
   end
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想使用此范围作为Ransack搜索结果的过滤器,因此在我的控制器中我有:

def index
  @q = Widget.accessible_to(current_user).search(params[:q])
  @widgets = @q.result.order('created_at DESC')
end
Run Code Online (Sandbox Code Playgroud)

这样做会产生以下错误:

未定义的方法`search'for Array:0x007ff9b87a0300

我猜Ransack正在寻找一个ActiveRecord关系对象,而不是一个数组.无论如何,我可以使用我的范围作为Ransack的过滤器吗?

ruby-on-rails meta-search scopes ruby-on-rails-3

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