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按预期输入,则不会出现错误,也不会出现空视图。

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

4

2 回答 2

2

手册

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

应该这样做。

于 2012-07-10T21:39:37.957 回答
1

点之后的所有内容通常被认为是请求的格式。即 html 或 json 或您的 rails 应用程序中配置的任何 mimetype。

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

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

于 2012-07-10T21:38:03.120 回答