2012-04-18 49 views
0

所以基本上我正在做的是创建一个网址列表,我从一个特定的url解析...在这种情况下,基地url是本地变量url如何在Ruby中执行另一个方法时使用一个方法中的局部变量?

我想要做的是,通过urlmy_list - 现在工作得很好......但一旦我有一个名单,然后我想通过阵列list的方法my_list宣布该方法的第一个元素add_category

看到代码:

def add_category(url) 
    new_url = url + '/web' 
end 

url = 'http://www.someurl.com' 

def my_list(url) 
    root = Nokogiri::HTML(open(url)) 
    list = root.css("a").map do |link| 
     [link.text, link[:href]]   
     end 

end 

my_list(url) 

add_category(list[0]) 

我去的地方是,我想修改每一个URL每我在add_category方法指定规则的list阵列英寸

想法?

回答

3

您不能从外部引用方法的局部变量。他们被称为“本地”是有原因的! :)

看来你的my_list方法只是生成一个列表,你想以后使用。所以,将它的返回值保存到一个局部变量(在调用者范围内),然后使用你想要的。看看这个:

def add_category(url) 
    url + '/web' 
end 

url = 'http://www.someurl.com' 

def my_list(url) 
    root = Nokogiri::HTML(open(url)) 
    root.css("a").map do |link| 
     [link.text, link[:href]]   
    end 
end 

list = my_list(url) 

new_url = add_category(list[0][1]) 
+0

我得到'无法转换字符串数组'错误周围的'url +'/ web'行。思考? – marcamillion 2012-04-18 20:54:35

+0

你的'url'是一个数组,而不是一个字符串(就像你想象的那样)。把一些调试打印到你的脚本来了解发生了什么。 – 2012-04-18 20:55:40

+0

啊......你说得对。我想通了......但为什么'url'是一个数组?不只是做'url ='一些字符串'​​使'url'变强,而不是数组? – marcamillion 2012-04-18 20:57:35

相关问题