2016-06-23 3 views
0

У меня есть следующие маршруты:Rails путь возвращения «.id» вместо „/ ид“

get 'requirements/' => 'requirements#index' 
post 'requirements/' => 'requirements#create' 
delete 'requirements/:id' => 'requirements#destroy' 

Проблема заключается в том, что requirements_path(id) возвращается /requirements.id вместо /requirements/id.

Как я могу это решить?

+1

@ruby_newbie не нужно для этого, особенно учитывая, что в этом приложении не потребуется действие show. Спасибо за вашу помощь –

ответ

0

Все, что я должен был сделать название маршрута:

delete 'requirements/:id' => 'requirements#destroy', as: :requirement 

Я считаю, что это было связано с тем, что requirements_path уже используется. Пожалуйста, оставьте комментарий, если вы знаете больше о проблеме.

0

Вы можете решить свою проблему, указав маршрут, но лучше исправить здесь будет использовать инструмент маршрутизации Rails resource, который будет называть ваши маршруты для вас. Это также позволит вам использовать правильно названный помощник requirement_path(id) (обратите внимание на единственное requirement, а не requirements).

В вашем routes.rb:

resources :requirements, only: [:show, :create, :destroy] 

Тогда requirement_path(1) будет генерировать /requirements/1, как вы ожидаете.

P.S. Причина, по которой вы получаете requirements.1 при использовании requirements_path(1), заключается в том, что все помощники маршрута принимают дополнительный аргумент, format, который становится форматом (например, .xml) в конце пути. Поскольку ваш помощник маршрута не ожидает каких-либо параметров маршрута, он превращает идентификатор в этот формат.

Смежные вопросы