小编efo*_*foo的帖子

Webfont路径,rspec,水豚和恶作剧者

我正在将我的Capybara测试套件从capybara-webkit转换为poltergeist.

-require 'capybara/webkit'
+require 'capybara/poltergeist'

-Capybara.javascript_driver = :webkit
+Capybara.javascript_driver = :poltergeist
Run Code Online (Sandbox Code Playgroud)

在运行我的测试时,第一次测试失败并显示此消息...

Failure/Error: Unable to find matching line from backtrace
 ActionController::RoutingError:
   No route matches [GET] "/assets/fonts/glyphicons-halflings-regular.ttf"
Run Code Online (Sandbox Code Playgroud)

经过一番调查,我发现类似的问题在这里.

但是,我有一个bootstrap.css的手动安装.我按照第二个答案中的建议调整了路径,并收到了更新路径的相同消息.

经过一段时间和挫折之后,我意识到这只是我套房中的第一次测试失败,其余的都通过了.很自然地,我删除了第一个测试.现在,"新"第一次测试失败,其余测试通过.所以我把它们全部删除了.现在,他们都没有失败!测试很简单!结束.

是什么让我的第一次测试失败?为什么其余的都过去了?

更多信息请求.

poltergeist ruby-on-rails-4 rspec3

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

设置Rails模型属性顺序

在定义依赖于另一个要设置的方法的虚拟setter方法时,看起来在哈希中设置的属性的顺序很重要.有没有办法围绕这个仍然大规模分配属性?

https://gist.github.com/3629539

编辑

实例中未显示的条件是检查关联对象是否存在.如果对象存在,请设置一个值.如果没有,请忽略传入的值.但是,我也使用accepts_nested_attributes_for.因此,属性哈希可以包含关联的属性.在这种情况下,对象将存在.

{:name => 'Fred', :nested_attributes => {:color => 'red'}}
Run Code Online (Sandbox Code Playgroud)

将不会设置名称,因为该模型将不存在.

{:nested_attributes => {:color => 'red'}, :name => 'Fred'}
Run Code Online (Sandbox Code Playgroud)

accepts_nested_attributes_for将构建一个嵌套实例,然后设置属性.当要设置名称时,实例将存在并且将设置嵌套属性.

ruby-on-rails

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

将模块混合到轨道上的红宝石模型中

我希望将几个模型共享的功能抽象到一个模块中.

我有这个型号:

class Report < ActiveRecord::Base
  include AppModel
  has_and_belongs_to_many :tag
  belongs_to :city
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

(另外,如何让我的代码在stackoverflow上跨越多行?它不会保留我的换行符.)

然后我有一个模块(在app/models/app_model.rb中):

module AppModel 
  def self.list
    find(:all, :order => 'name asc').map { |item| [item.name, item.id] }
   end
end
Run Code Online (Sandbox Code Playgroud)

但如果我这样做Report.list不起作用.我怀疑在我做的模块中是否存在问题def function或者def self.function

如此反复,我的问题是,如何让我访问的功能,例如Report.list或者Report.find_tagged是一个模块中定义.

activerecord ruby-on-rails

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