2

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

  • “/does/not/work/for/some.reason”
  • “/does/not/work/for/some.bizarre.reason”

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

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

  • 得到 '/does/not/work/for/:name' 做
  • 得到 '/does/not/work/for/*splat' 做

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

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

  • “/does/not/work/for/some.bizarre.reason/info”

然后两者

  • 得到'/does/not/work/for/:name/info'
  • 得到'/does/not/work/for/*splat/info'

匹配好...

我错过了什么吗?

4

1 回答 1

0

使用正则表达式

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

使用命名参数

Padrino 将尝试匹配formatURL 末尾的 a,例如.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
于 2013-06-01T00:41:38.237 回答