2017-01-25 1 views
0

У меня есть модель рельсов и вы хотите иметь на ней симпатичные URL-адреса вместо идентификатора по умолчанию (для seo и соображений безопасности). Для большинства случаев это работает. Я заметил на названия компаний, заканчивающихся с периодом, я получаю сообщение об ошибке, как показано ниже:Ошибка использования Friendly_Id с рельсами по именам, заканчивающимся на период

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. Я получаю большинство компаний, но я все равно получаю ту же ошибку при именах, заканчивающихся периодом.

ответ

0

Я думаю, this StackOverflow page дает лучший ответ. Направляющие направляющих объясняют это подробно here.

В основном, динамические сегменты не принимают точек, так что вы должны явно разрешить их в ваши маршруты файл с чем-то вроде этого:

resources :companies, constraints: { id: /[^\/]+/ } 

который позволяет ничего, кроме косой черты, за гидами.