在以句点结尾的名称上使用带有 Rails 的Friendly_Id时出错



我有一个rails模型公司,并希望在上面有漂亮的网址而不是默认ID(出于seo和安全原因)。在大多数情况下,它有效。我注意到在以句点结尾的公司名称上,我收到如下错误:

No route matches [GET] "/admin/companies/Baking%20co."

为了测试这一点,我删除了friendly_id实现并简单地覆盖了to_param方法

def to_param
  name
end

并将控制器显示操作从

Company.find(params[:id]) 

Company.find_by_name(params[:id])

这与friendly_id方法具有相同的效果。我让大多数公司都出现了,但我仍然在以句点结尾的名称上收到相同的错误。

根据这个StackOverflow页面,您是否尝试在routes.rb文件中设置format: false

我认为这个StackOverflow页面给出了更好的答案。 导轨指南在这里详细解释。

基本上,动态段不接受点,因此您必须在路由文件中明确允许它们

,如下所示:
resources :companies, constraints: { id: /[^/]+/ }

根据指南,除了斜杠之外,它允许任何东西。

最新更新