2013-09-25 27 views
-3

我是編程初學者,爲了能夠從命令行執行某些def,我改變了一些代碼。這一變化後,我得到了一個錯誤,但首先我的代碼:代碼在稍作改動後無法工作

require 'faraday' 

@conn = Faraday.new 'https://zombost.de:8673/rest', :ssl => {:verify => false} 
@uid = '8978' 

def certificate 
    res = conn.get do |request| 
    request.url "acc/#{@uid}/cere" 
    end 
end 

def suchen(input) 
    @suche = input 
    @res = @conn.get do |request| 
    request.url "acc/?search=#{@suche}" 
    end 
end 

puts @res.body 

然後寫到控制檯:

ruby prog.rb suchen(jumbo) 

所以,不知何故,我得到的錯誤:

Undefined method body for Nilclass 
+1

你爲什麼downvote呢? Im初學者 –

+0

其中,您的shell語法無效。 –

+0

是否有可能從控制檯調用def suchen? –

回答

3

你'不會調用你的任何方法,所以@res永遠不會被分配給。

@res的計算結果爲nil,因此您要調用nil.body


RE:您的更新:

ruby prog.rb suchen(jumbo)

這是不是你調用一個方法。您必須在源文件內調用。您所做的只是將參數傳遞給您的腳本,這將是ARGV陣列中的一個簡單字符串。


RE:您的評論:

應該不用說,解決辦法是實際調用你的方法

+0

那麼解決方案是什麼? H –

+0

是否可以從控制檯調用方法 –

0

您可以從命令行調用方法。 Ruby有一個函數eval,它計算一個字符串。您可以評估命令行參數字符串。

以下是操作方法。更改線路puts @res.body

str = ARGV[1] 
eval(ARGV[0]) 
puts @res.body 

後運行程序,像這樣

$ ruby prog.rb suchen\(str\) jumbo