ruby-on-rails - 在 Ruby 中使用 Map 和 Select 方法一起遍历数组

标签 ruby-on-rails ruby ruby-on-rails-3

我正在开发一个应用程序,但我遇到了以下代码。

我有一个链接数组,其中包含用户在表单中发布的一些链接。 例如我的数组是 bunch1 = ["google.com","http://yahoo.com"]

现在,在我将它们存储到数据库之前,我需要确保每个链接的开头都添加了“http://”,因为我的 ActiveRecord 对象中有“验证:”逻辑。

所以我的逻辑是,我将遍历数组并检查数组中每个链接之前是否存在“http://”字符串段。很明显,我必须在数组中的“google.com”之前添加“http://”字符串段。

所以我写了这样的代码:

bunch2=bunch1.map { |y| y="http://"+y }

但它会创建一个 bunch2 数组,如 bunch2=["http://google.com","http://http://yahoo.com"]

如您所见,它在“http://yahoo.com”之前添加了一个额外的“http://”。

为了解决这个问题,我修改了上面的代码:

bunch2 = bunch1.select { |x|  x !~ /http/ }.map { |y| y="http://"+y }

但它正在生成一个数组 bunch2 = ["http://google.com"] 因为带select方法的正则表达式是去掉yahoo.com

有人可以给我这个问题的解决方案吗?提前致谢...

最佳答案

为什么不在对 map 的调用中进行测试?

bunch2 = bunch1.map {|y|是的!〜/^ http/? "http://#{y}": y

关于ruby-on-rails - 在 Ruby 中使用 Map 和 Select 方法一起遍历数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142764/

相关文章:

ruby-on-rails - 如何解决包含的 n+1 查询问题 - Rails

ruby-on-rails - 按列分组,然后在 Rails 中获取另一列的总和

ruby - Ruby的标准库中有优先级队列数据结构的实现吗?

mysql - Active Record NOT IN queries 和 NULL with MySQL

ruby-on-rails - pry 不是 rails 控制台与 Rails 4.0 一起使用

mysql - 使用 Rails,我可以在不使用 ActiveRecord 的情况下从遗留数据库中检索数据吗?

ruby-on-rails - 了解 Ruby 最重要的事情是什么?

ruby-on-rails - Rails 4 + Devise - 更新用户帐户时不允许的参数

ruby-on-rails - 如何使用 Factory girl 创建管理员角色?

ruby-on-rails - Rails 3.1 邮件程序 pdf 附件损坏