-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
4

2 回答 2

3

您没有调用任何一种方法,因此@res永远不会分配给。

@res评估为nil,因此您正在调用nil.body.


回复:您的更新:

ruby prog.rb suchen(jumbo)

这不是你调用方法的方式。您必须从源文件中调用它。您所做的只是将一个参数传递给您的脚本,这将是ARGV数组中可用的一个简单字符串。


回复:您的评论:

不用说,解决方案是实际调用您的方法

于 2013-09-25T18:06:12.463 回答
0

您可以从命令行调用这些方法。Ruby 有一个eval计算字符串的函数。您可以评估命令行参数字符串。

就是这样。将行更改puts @res.body

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

然后像这样运行你的程序

$ ruby prog.rb suchen\(str\) jumbo
于 2013-09-25T19:01:13.553 回答