Sid*_*rth 3 ruby ruby-on-rails ruby-on-rails-3
我正在开发一个应用程序,我坚持使用以下代码.
我有一个链接数组,其中包含用户在表单中发布的一些链接.比方说我的数组是bunch1 = ["google.com","http://yahoo.com"]
现在,在我将它们存储到数据库之前,我需要确保每个链接都在开头添加了"http://",因为我在ActiveRecord对象中有'validate:'逻辑.
所以我的逻辑是我将迭代数组并检查数组中每个链接之前是否存在"http://"字符串段.很明显,我必须在我的数组中的"google.com"之前添加"http://"字符串段.
所以我写了这样的代码:
bunch2=bunch1.map { |y| y="http://"+y }
Run Code Online (Sandbox Code Playgroud)
但是它创建了一个像bunch2 = ["http://google.com","http:// http://yahoo.com"]这样的一堆数组
正如您所看到的,它在"http://yahoo.com"之前添加了额外的"http://".
为了解决这个问题,我修改了上面这样的代码:
bunch2 = bunch1.select { |x| x !~ /http/ }.map { |y| y="http://"+y }
Run Code Online (Sandbox Code Playgroud)
但它正在生成一个类似的数组
bunch2 = ["http://google.com"],因为使用select方法的正则表达式正在消除yahoo.com
有人可以帮我解决这个问题.提前致谢...