小编tho*_*nch的帖子

带参数的方法的RSpec测试ArgumentError

我在让这个简单的测试传递给RSpec 2.8时遇到了问题.

我想为需要它们的方法上缺少参数编写一个简单的测试(即ArgumentError:错误的参数个数('y'代表'y')).

我的测试是测试Gem模块方法,如下所示:

describe "#ip_lookup" do
  it "should raise an ArgumentError error if no parameters passed" do
    expect(@geolocater.ip_lookup).to raise_error(ArgumentError)
  end
end
Run Code Online (Sandbox Code Playgroud)

我的gem模块代码如下所示:

module Geolocater
  def ip_lookup(ip_address)
   return ip_address
  end
end
Run Code Online (Sandbox Code Playgroud)

我的规格与此输出一起运行.

Failure/Error: expect(@geolocater.ip_lookup).to raise_error(ArgumentError)
     ArgumentError:
       wrong number of arguments (0 for 1)
     # ./lib/geolocater.rb:4:in `ip_lookup'
     # ./spec/geolocater_spec.rb:28:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

ruby unit-testing rspec

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

从Rails中的单表继承获取子类的列表/数组?

我有一大堆子类,通过我的Rails应用程序中的单表继承从父类继承.我想要一种方法来获取从主类继承的所有子类的数组.

我尝试了在另一个SO答案中找到的以下单链接命令,但它只返回父类.

ObjectSpace.each_object(class<<MyParentClass;self;end)
Run Code Online (Sandbox Code Playgroud)

有没有干净的方法来做到这一点?

编辑: 显然Rails只在惰性模式下调用延迟加载子类,并且可能根据Rails版本生成.但是,第一个答案应该适用于Prod模式下的Rails 3.1及更高版本.

ruby-on-rails single-table-inheritance

13
推荐指数
5
解决办法
8594
查看次数

标记,InfoWindow和Shadow无法在Google Maps Javascript API中正确呈现?

我从此处的演示中复制了Google Maps AutoComplete JS示例:

地图自动完成演示

除了渲染信息和阴影之外,一切都很有效.我无法弄清楚为什么.起初我以为是因为我手动设置了地图的最大宽度,但是当我关闭所有CSS规则时它仍然无法正确渲染.

以下是我的客户端代码示例:

在此输入图像描述

这是演示的截图

在此输入图像描述

有任何想法吗?

谢谢!〜丹

@thoughtpunch

google-maps google-maps-api-3 google-maps-markers

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

Ruby Array to Histogram:如何按范围对数字进行分组?

我正在尝试根据各个值落在某个范围内的位置将整数数组分组到散列中.基本上我想将数组转换为固定宽度的直方图.

例:

values = [1,3,4,4,4,4,4,10,12,15,18]
bin_width = 3
Run Code Online (Sandbox Code Playgroud)

我需要将数组值分组到基于范围的历史记录中,它们落入一个3单位宽的桶中,如下所示:

{'0..2'=>[1,3],'3..5'=>[4,4,4,4,4],'6..8'=>[],'9..11'=>[10]....
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的单行解决方案(也许类似values.group_by{|x| #range calc})可以在这里工作?

ruby arrays statistics histogram

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

Rails 3:":method =>:post"不起作用......当它'POST'时似乎是'GET'

我正在尝试在我的Rails 3应用程序中实现"友谊",如Railscast 163:Self Referential Assosication中所述

我按照描述设置了所有内容.我正在使用一个基本的用户模型登录Authlogic工作正常.但是,当我尝试使用以下链接添加朋友时:

<% for user in @users %>   
 <%=h user.username %> 
  <%= link_to "Add Friend", friendships_path(:friend_id => user), :method => :post %>     
<% end %>
Run Code Online (Sandbox Code Playgroud)

我得到一个重定向http://localhost:3000/friendships?friend_id=2和一个未知的操作无法找到FriendshipsController错误的动作'index',没有进一步的解释.这是特别奇怪的,因为我有一个硬编码重定向回到我当前用户的"User#show"方法(即在添加好友后重定向回配置文件).

如果它有帮助,这是我的"友谊#create"方法:

def create  
  @friendship = current_user.friendships.build(:friend_id => params[:friend_id])  
  if @friendship.save  
    flash[:notice] = "Added friend."  
    redirect_to :controller => 'users', :action => 'show', :id =>'current_user'
  else  
    flash[:notice] = "Unable to add friend."  
    redirect_to :controller => 'users', :action => 'show', :id =>'current_user' 
  end  
end
Run Code Online (Sandbox Code Playgroud)

知道是什么原因引起的吗?我发现有人在这里有类似的问题,但我找不到一个明确的解决方案:Rails …

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

6
推荐指数
2
解决办法
8450
查看次数

使用Dir.glob列出Rails 3.1中的资产?

我试图/app/assets/images使用Dir.glob()命令从我的目录中的子目录中随机选择一个图像,然后用一个显示它image_tag.不知怎的,我无法让它发挥作用.

这是我的代码:

- @badges = Dir.glob("app/assets/images/badges/*")
= image_tag @badges.sample
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

ActionController::RoutingError (No route matches [GET] "/assets/app/assets/images/badges/produce.png"):
Run Code Online (Sandbox Code Playgroud)

如您所见,资产管道正在目录前插入"/ assets".好吧Rails,我会在这里见到你.接下来我尝试/app/assets从查询路径中删除以使其工作并获得以下结果:

- @badges = Dir.glob("images/badges/*")
  = image_tag @badges.sample

ActionController::RoutingError (No route matches [GET] "/assets"):
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?在此先感谢您的帮助!

ruby-on-rails-3.1 asset-pipeline

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

删除/删除ElasticSearch with Tire中的索引文档(通过ActsAsParanoid进行软删除)

我有一个ElasticSearch服务器运行,使用优秀的Tire gem索引和搜索文档.一切都很好,除了我不知道如何手动从搜索索引中删除文档.

我已经倾倒了RDoc并搜索了几个小时,但这是解决方案的唯一提示我可以找到https://github.com/karmi/tire/issues/309.除了在curl周围构建自定义包装器并手动发出请求之外,还有更简单的方法吗?

另一个问题是我使用了名为ActsAsParanoid的软删除gem,因此Tire :: Model :: Callbacks不会删除软删除对象.

有任何想法吗?

elasticsearch tire

6
推荐指数
2
解决办法
3350
查看次数

Heroku和@ font-face - 嵌入式字体不会在Heroku上显示

我有一些使用CSS 标签嵌入到我的Rails应用程序中的许可字体@font-face.这些字体位于"../Public/Fonts/"我的Rails 3应用程序的路径中,并在我下拉回购并运行的任何本地计算机上完美呈现.

但是,当我将我的应用程序推送到Heroku时,它似乎无法找到字体.你可以告诉它正在查看字体目录,但永远不能访问它们.在我放置字体的位置或者如何在@ font-face声明中键入字体路径似乎并不重要.

我的字体位于 #{RAILS.root}/public/fonts/ChunkFive

这是我的@ font-face声明:

@font-face {
font-family: "ChunkFive";
src: url("../fonts/ChunkFive/ChunkFive-webfont.eot");
src: local("?"),
url("../fonts/ChunkFive/ChunkFive-webfont.woff") format("woff"),
url("../fonts/ChunkFive/ChunkFive-webfont.ttf") format("truetype"),
url("../fonts/ChunkFive/ChunkFive-webfont.svg") format("svg");
}
Run Code Online (Sandbox Code Playgroud)

这是我为每种字体获得的404资源未找到消息:

Request URL:http://thedanbarrett.heroku.com/fonts/ChunkFive/ChunkFive-webfont.woff
Request Method:GET
Status Code:404 Not Found
Request Headers
Referer:http://thedanbarrett.heroku.com/home
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 
(KHTML,like Gecko) Chrome/8.0.552.224 Safari/534.10
Response Headers
Age:0
Connection:keep-alive
Content-Length:727
Content-Type:text/html
Date:Wed, 05 Jan 2011 15:25:21 GMT
Server:nginx/0.7.67
Via:1.1 varnish
X-Runtime:0.001344
X-Varnish:764492621
Run Code Online (Sandbox Code Playgroud)

奇怪的是,它在同一根文件夹中查找并加载样式表,图标和图像.只是重申字体嵌入和工作从本地服务器完美运行,即使在没有安装字体的主机上也是如此.

我确实在线找到了一个有类似问题的人,他们改变了他们的config.ruenvironment.rb文件,使其与Heroku友好,但我似乎无法找到它.

在此先感谢你们的帮助!

〜丹

css ruby-on-rails heroku font-face

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

将参数传递给JavaScript和Rails

在我的Rails应用程序中,我有一个帮助方法location,它获取给定IP地址的坐标,并使它们可用于所有控制器和视图.例如,location.latitude返回用户的纬度.你明白了.

我还有一些Javascript可以根据给定的纬度/经度对从Google Maps API中绘制地图.问题是我不知道如何将locationparams 传递给JavaScript!

JavaScript位于'application.js'中,如下所示:

$(document).ready(function() 
  { 

    //Map options...I want the params to go into the var 'MapOptions' below

    function initialize() {
      var mapOptions = {
        center: new google.maps.LatLng(40.764698,-73.978972),
        zoom: 13,
        mapTypeId: google.maps.MapTypeId.ROADMAP
        };

    //Setup and Draw the Map...
    //....................................
  };
Run Code Online (Sandbox Code Playgroud)

地图本身就像在HTML中一样被调用.通过params没有明显的方法.

<div id="map_canvas">
  <!-- The Map gets drawn here! -->
</div>
Run Code Online (Sandbox Code Playgroud)

我知道这可能是一个显而易见的问题,但我以前从未将这个参数从我的应用程序传递给Javascript.

javascript google-maps ruby-on-rails

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

使用Rails/Jquery创建动态更新的进度条?

这是我的第一个"一般"问题 - 我不是在寻找任何人为我编写一行代码,我只需要一些建议

我在寻找实施进度条/温度计(最好在jQuery的),当用户输入数据到在我的Rails应用程序的形式,动态更新的方法.我并不关心表单字段的价值,只关注它们是否填写.个别领域将有硬编码的权重(即填写你的名字给你1分,电子邮件10点等)递增的状态栏的计数/百分比非常AJAX-Y,异步方式.我不想发布或刷新以查看进度条的状态.

我有一种感觉,我将不得不使用一些premade jquery库,如下所示:

  1. Jquery ProgressBar
  2. ProgressBarDemo

这里的踢球者:我甚至无法捉摸,以得到这些进度条来接受我的Rails表单助手形式根据用户输入的数据.我查看了所有的API文档和类方法,不知道从哪里开始!

那怎么样?你能指出这个n00b正确的方向吗?我能看到的任何好例子?

提前致谢!

〜丹

jquery user-interface ruby-on-rails

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