Ruby - 从URL中检索一个参数
问题描述:
我完全陌生,所以你不得不原谅我的无知,但我试图将一个动态值传递给一个函数,该函数将所有素数的总和提高到一个限制。我在网址参数传递的动态极限通过,但似乎无法使其工作:Ruby - 从URL中检索一个参数
index.erb:
<form action="/primes">
<input type="text" name="prime_limit" value="<%= @limit %>">
<input type="submit" value="Get Primes">
</form>
app.rb:
get '/primes' do
# TODO - Can we make this dynamic?
limit = uri.params['prime_limit']
# TODO - add your prime number solution in the primes.rb file.
@sum = Primes.sum_to(limit)
erb :primes, :layout => :main
end
素数。 RB:
require 'uri'
require 'cgi'
uri = URI.parse(@object.location)
uri_params = CGI.parse(uri.query)
class Primes
def self.sum_to(limit)
# TODO - add your prime number solution here...
require 'prime'
Prime.each(limit).inject(:+)
end
end
primes.erb:
<h1>Prime Numbers</h1>
Sum : <%= @sum %>
<div>
<a href="/">Back</a>
</div>
任何帮助将非常感激。
谢谢
答
也许这个例子可以帮助你吗?只是最低限度的代码(我觉得)你想要做西纳特拉做什么..你的想法
# app.rb
require 'sinatra'
get '/' do
erb :index
end
get '/primes' do
@sum = Primes.sum_to(params[:prime_limit].to_i)
erb :primes
end
class Primes
def self.sum_to(limit)
# TODO - add your prime number solution here...
require 'prime'
Prime.each(limit).inject(:+)
end
end
的params[]
散列存储查询字符串和表单数据。所以当你抛出GET请求时,查询字符串看起来像example.com/app/?arg=3
,params[:arg]
设置为3
。
你也可以做get '/app/:arg' do
在西纳特拉,这使得/app/45
店params[:arg] = 45
。 Sinatra是一个简单但功能强大的工具,文档并不长。我认为这是值得通过所有或其中大部分。
+1
哦,你现在是我最喜欢的人!非常感谢,它非常完美。我一定会阅读Sinatra文档,我刚刚从我申请的一个编码学校那里接受了这个挑战,而且我对Sinatra没有任何经验,甚至没有基础知识。再次感谢,真的很感激它! –
它看起来不像铁轨。是sinatra吗? – BroiSatse
非常抱歉,是的,它是Sinatra。这就是你在这里处理的水平! –
Sinatra自动将URL参数分析到'params'哈希。你不需要自己解析它。只需访问'params ['prime_limit']'。这在Sinatra自述文件的第一部分中已经介绍过了,路径如下:http://www.sinatrarb.com/intro.html#Routes –