2010-12-17 103 views
4

我会如何解决这个问题? 我试图为什么这个命令不能在这个特定的代码中工作?

Net::HTTP.new(@site).head('/').kind_of? Net::HTTPOK 

但我收到此:

error: in `kind_of?': class or module required (TypeError)

我觉得有什么错我的代码,可以请你看一看呢?我知道它非常混乱,很糟糕,我是一年级的编程学生,我正在学习。如果您有任何改进意见,请告诉我!

此外,有一些东西搞砸了其中包含的内容。出于某种原因,当我试图结束所有的defs时,我得到了一个意外的结束错误。

这是我在上下文代码:

def begindownload 
    require 'net/http' 
    puts "Enter the URL of the site that you want to rip images from (use www.*website*.com/folder/file.html or other extension format):" 
    while @site = gets.chomp 
     puts "Querying " + @site 
     if Net::HTTP.new(@site).head('/').kind_of? Net::HTTPOK == true 
      puts "Site is online!" 
     else 
      puts "Site is offline. Try again." 
     end 
    end 
end 
+0

请张贴更多相关代码,特别是'require'语句。另外,请通过格式化问题来帮助我们,以便代码可读。 – BryanH 2010-12-17 21:03:00

+0

Stackoverflow将链接撕掉了! http://pastebin.com/WzSawCwz – user451711 2010-12-17 21:04:41

+0

您可以通过选择并按下Ctrl-K(或将其缩进四个空格)来格式化代码。 – 2010-12-17 21:05:59

回答

6

在你的代码使用的是行:

if Net::HTTP.new(@site).head('/').kind_of? Net::HTTPOK == true 

==正在评估第一引发Net::HTTPOK == true进行评估,以false。接下来的陈述变为:

if Net::HTTP.new(@site).head('/').kind_of? false 

导致您的TypeError

当您执行if语句时,不需要检查== true。如果if之后的语句评估为true,则将评估if。无论如何检查布尔== true是否被认为是不好的形式。

+0

删除了==真,它完美的作品。谢啦! – user451711 2010-12-17 21:20:58

0

你有没有试过.instance_of代替?

相关问题