为什么我的Sinatra应用程序中有两个变量的路由不起作用?

时间:2011-05-12 21:22:27

标签: ruby sinatra

我有一个简单的sinatra应用程序如下:

get '/api/v1/:api_id/:init/' do
  @api_id = params[:api_id]
  @init = params[:init]

  @init_date = @init.split("-")      
  initial_date = Time.utc(@init_date[0], @init_date[1], @init_date[2]) # 2011-05-01 00:00:00 UTC  

  initial_date
end

当我浏览http://localhost:4567/api/v1/12345/2011-10-1/时,我得到“2011-10-1”,没有什么可以改变它!

我做错了什么?

1 个答案:

答案 0 :(得分:1)

  1. 有更简单的方法来获取参数和解析日期:

    phrogz$ cat date_parse.rb 
    require 'sinatra'
    require 'date'
    get '/foo/bar/:id/:date' do |id,date|
      initial_date = Time.parse( date )
      initial_date.to_s
    end
    
    phrogz$ curl http://localhost:4567/foo/bar/42/2011-10-05
    2011-10-05 00:00:00 -0600
    
    phrogz$ curl http://localhost:4567/foo/bar/42/2011-11-1
    2011-11-01 00:00:00 -0600
    

    这不适合你吗?每次输入不同的URL时,您都会根据哈希中的参数获得不同的响应。

  2. 您是否真的想使用Date代替Time