Ruby - 从URL params中检索值

时间:2016-02-26 14:52:58

标签: ruby sinatra

我对此完全陌生,所以你不得不原谅我的无知,但我试图将一个动态值传递给一个函数,该函数可以得到所有素数之和达到极限。我在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

primes.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>

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:2)

也许这个例子可以帮到你?只是一个最小的代码(我认为)做你想要的sinatra做什么......你明白了

X

# 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]

您还可以在sinatra中执行3,这会使get '/app/:arg' do存储/app/45。 Sinatra是一个简单但功能强大的工具,文档记录不长。我认为值得全面或大部分地查看。