如何忽略网址中的点

时间:2012-07-10 21:33:19

标签: html ruby-on-rails

当我输入他们的名字时,我的程序会显示有关数据库中项目的信息。 它适用于ID和大多数名称,除非名称包含点。

match 'show/:name' => 'show#displayinfo'

在控制器中我有:

@details = Description.where(:name => params[:name] ).first

如果找不到名字该怎么办?

当我输入类似../show/Ruby的内容时 - 它运行正常 但是../show/a.b在开发日志中显示一个空页面并且没有错误:

Processing by ShowController#displayinfo as 
Parameters: {"name"=>"a"}

如果我输入../show/a,则按预期工作,没有错误,没有空视图。

除了重命名数据库中的项目之外,还有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

来自manual

match 'show/:name' => 'show#displayinfo', :format => false

应该这样做。

答案 1 :(得分:1)

点后的所有内容通常被视为请求的格式。即在r​​ails应用程序中配置html或json或任何mimetype。

以下是一个如何超越此默认行为的示例:http://zargony.com/2009/05/05/routing-parameters-with-a-dot

基本技巧是使用贪婪的正则表达式来解析参数。