2012-04-18 66 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

相關問題