我有一个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: /[^/]+/ }
根据指南,除了斜杠之外,它允许任何东西。