我是编程的初学者,我稍微更改了我的代码,以便我可以从命令行执行一些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
答案 0 :(得分:3)
您没有调用任何一种方法,因此永远不会将@res
分配给。
@res
评估为nil
,因此您正在调用nil.body
。
RE:您的更新:
ruby prog.rb suchen(jumbo)
这不是你调用方法的方式。您必须从源文件中的调用它。您所做的只是将一个参数传递给您的脚本,这将是ARGV
数组中可用的简单字符串。
RE:您的评论:
不言而喻,解决方法是实际调用您的方法。
答案 1 :(得分:0)
您可以从命令行调用方法。 Ruby有一个函数eval
来计算字符串。您可以评估命令行参数字符串。
这是怎么回事。将行puts @res.body
更改为
str = ARGV[1]
eval(ARGV[0])
puts @res.body
然后像这样运行你的程序
$ ruby prog.rb suchen\(str\) jumbo