2012-07-10 127 views
1

当我输入名称时,我的程序显示有关数据库中项目的信息。 它适用于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

manual

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

应该这样做。

1

点后面的所有内容通常被认为是请求的格式。即HTML或JSON或任何mimetype在您的Rails应用程序中配置。

这里是你如何能超越这种默认行为的一个例子:http://zargony.com/2009/05/05/routing-parameters-with-a-dot

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