如何从网址添加两个参数

时间:2013-09-06 11:15:56

标签: ruby sinatra

如何在我的网页中显示int1 + int2的结果?我可以知道它是整数还是字符串?这是我的代码:

require 'sinatra'

get '/add/:int1/:int2' do
  puts #{params[:int1]} + #{params[:int2]}
end

4 个答案:

答案 0 :(得分:2)

"#{params[:int1].to_i + params[:int2].to_i}"

答案 1 :(得分:0)

你需要在url中传递它

http://yourdomain/add/2/3 #=> this will display 5  :int1 => 2, :int2 => 3

用于嵌入/插值变量使用双引号和puts

puts "#{params[:int1]} + #{params[:int2]}"

答案 2 :(得分:0)

这是应该有用的东西:

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。要应用哪种转换,以及如何验证你真的有可转换的数字,这有点复杂,如果它困扰你可能是另一个问题。

  • 最后,使用字符串插值返回的数字为String,因为如果只返回一个数字,Sinatra会将其作为HTTP状态代码。

请注意,分离计算并将结果转换为字符串并非绝对必要。我在这里做的只是为了说明这两部分实际上是你需要做的不同的事情。

答案 3 :(得分:0)

使用块参数更具可读性:

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