Sinatra 脚本不工作

Sinatra script not working

我是 Ruby 的新手,只想要一个可以找到素数并打印出来的网页。而已。我想用 Sinatra 框架来做。这是我的代码:

#require 'prime'
require 'sinatra'

def primes(size)
    arr=(0..size).to_a
    arr[0]=nil
    arr[1]=nil
    max=size
    (size/2+1).times do |n|
        if(arr[n]!=nil) then
            cnt=2*n
            while cnt <= max do
                arr[cnt]=nil
                cnt+=n
            end
        end
    end
    arr.compact!
end

set :port, 8080
set :static, true
set :public_folder, "static"
set :views, "views"

get '/' do
    #return 'Hello world'
    return puts primes(10)
end

我通过 http://localhost:8080/ 运行 这个脚本,但我什么也没看到。只是一个空白页。具有相同脚本的 Hello World 工作正常。 primes 函数也可以完美运行,我已经通过命令行对其进行了测试。我做错了什么?

问题是 return puts primes(10).

puts 只是将输出输出到 STDOUT(控制台)而不是 HTTP 响应(网页内容)。此外,我仍然认为 return 数组到 Sinatra 会是一个问题,因为它使用数组传递有关响应的附加数据,因此如果你想测试这个脚本,如果你更改提到的行,它可能会起作用至:

primes(10).to_s

to_s 将您的数组转换为字符串。