【问题标题】:Why is my route with two variables not working in my Sinatra app?为什么我的带有两个变量的路由在我的 Sinatra 应用程序中不起作用?
【发布时间】:2011-05-12 21:22:27
【问题描述】:

我有一个简单的 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”,没有什么可以改变它!

我做错了什么?

【问题讨论】:

  • 你想得到什么?为什么应该是2011-05-01 00:00:00 UTC
  • 我只是想测试一下。好像每次改“return”都要重启服务器?
  • 我不明白。你有什么问题?那是“必须重新启动服务器”还是有日期的东西?如果是关于重新启动,请阅读此内容 - sinatrarb.com/faq.html#reloading
  • 你的意思是每次更改路由中的代码都必须重新启动服务器才能看到新代码生效,并且想要一种方法让 Sinatra 自动运行新代码在你的文件中?如果不是,你是什么意思?你唯一的问题是“我做错了什么?”但你没有显示任何对我来说有问题的东西。

标签: ruby sinatra


【解决方案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

【讨论】:

    猜你喜欢
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多