当url有句号时,如何获得Padrino匹配路由?

时间:2012-01-04 05:35:34

标签: ruby padrino

在Padrino中,如果我想要一条路线匹配以下网址:

  • “/ does / not / work / for / some.reason”
  • “/确实/不/工作/对/ some.bizarre.reason”

我该怎么做?即url的最后一部分可以有任意数量的句点,我希望它是其中一个参数。

我尝试了以下操作,但路线不匹配

  • 获取'/不/不/工作/为/:名称'做
  • 获取'/不/不/工作/为/ * splat'do

但是,如果我将句点更改为下划线,例如“/ does / note / work / for / some_reason”,它们可以正常工作。

另外,如果我执行以下操作:

  • “/确实/不/工作/对/ some.bizarre.reason /信息”

然后两者

  • 获取'/不/不/工作/为/:名称/信息'
  • 获取'/不/不/工作/为/ * splat / info'

匹配好......

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

使用正则表达式

# GET /with/regexp/it.will.work
get %r{\A/with/regexp/(.*)\Z} do |name|
  # name => "it.will.work"
end

使用命名参数

Padrino会尝试匹配网址末尾的format,例如.json.html

可以通过params[:format]访问该格式,您需要将其加入params[:name]

# GET /with/named/param/it.also.works.with.a.format
get :named, :map => '/with/named/param/:name'
  name = "#{params[:name]}.#{params[:format]}"
  # name => "it.also.works.with.a.format"
end