我有这样的路线:
match '/pages/:name/preview' => 'pages#page_preview'
但是,当这样的路线出现/pages/a.com/preview
时,它会给我一个错误'没有路线匹配'。我试过URL编码了。字符到%2E
,但同样的错误来了。在定义预览路由之前,我还在页面(resources :pages
)上设置了资源。
该路由适用于所有其他路由,在name参数中没有.
个字符(空格和?等正常工作)
答案 0 :(得分:4)
这是因为点用作格式化路线的分隔符。要摆脱这种情况,请添加一个覆盖它的约束。
match '/pages/:name/preview' => 'pages#page_preview', :constraints => { :name => /[^\/]+/ }
这将允许除斜杠之外的任何内容。