如何在我的网页中显示结果int1 + int2
?我可以知道它是整数还是字符串?这是我的代码:
require 'sinatra'
get '/add/:int1/:int2' do
puts #{params[:int1]} + #{params[:int2]}
end
"#{params[:int1].to_i + params[:int2].to_i}"
使用块参数更具可读性:
get "/add/:int1/:int2" do |a, b|
"#{a.to_i + b.to_i}"
end
您甚至可以使用正则表达式来确保整数:
get %r{/add/(\d+)/(\d+)} do |a, b|
"#{a.to_i + b.to_i}"
end
你需要在 url 中传递它
http://yourdomain/add/2/3 #=> this will display 5 :int1 => 2, :int2 => 3
对于嵌入/插值变量,使用带双引号的 puts
puts "#{params[:int1]} + #{params[:int2]}"
这是应该起作用的东西:
require 'sinatra'
get '/add/:int1/:int2' do
sum = params[:int1].to_i + params[:int2].to_i
"#{sum}"
end
我更改了以下内容:
已移除puts
- 可用于调试,但 Sinatra 使用返回值,而不是 STDOUT(基于 CGI 的框架可能使用)通过 Web 服务器输出。我假设您正在浏览器中查看。
删除了#{ variable }
语法 - 这是用于将计算插入String
结果中,此处不需要。如果您要构建更复杂的字符串,则可能是要走的路。
将参数转换为Fixnum
,使用to_i
它们将始终是String
最初的。要应用哪种转换,以及如何验证您是否真的有可转换的数字,这有点复杂,如果它困扰您,也许是另一个问题。
最后,使用字符串插值将数字作为 a 返回String
,因为如果您只返回一个数字,Sinatra 会将其作为 HTTP 状态代码。
请注意,将结果分离为计算并将结果转换为字符串并不是绝对必要的。我在这里做了只是为了展示这两个部分实际上是你需要做的不同的事情。