Как правильно определить маршруты get и post в рельсах? - PullRequest
0 голосов
/ 17 октября 2018

Недавно я работал с рельсами.У меня есть форма с form_tag, которая получает сообщение помощника от routs.rb.У меня есть один и тот же маршрут в get для доступа к этой форме, и у меня есть маршрут в posrt, чтобы можно было отправлять данные предыдущей формы:

get 'students/:student_id/monitorings/inscribir', to: 'monitorings#inscribir', as: :inscribir_student_monitoring
post 'students/:student_id/monitorings/inscribir', to: 'monitorings#inscribir', as: :inscribir_student_monitoring_post

Мой вопрос заключается в том, как я могу разделить эти маршруты?Так как, согласно расследованию, это может вызвать проблемы, так как оба имеют один и тот же адрес, и действительно, если это вызывает у меня проблемы, так как при входе по этой ссылке форма выполняется автоматически.

Обязательно ли нужно разделятьдва маршрута?И если это правда, как я могу это сделать?Я попробовал нечто похожее на то, что делают рельсы в отношении метода get new и метода post create, но адаптировал его к моему случаю, но у меня это не сработало.

Спасибо.

1 Ответ

0 голосов
/ 17 октября 2018

Обязательно ли нужно разделять два маршрута?

Нет!Если ваши оба маршрута не имеют одинакового имени , это не будет проблемой.Например, если у вас есть маршруты, подобные ниже

get 'students/:student_id/monitorings/inscribir', to: 'monitorings#inscribir', as: :inscribir_student_monitoring
post 'students/:student_id/monitorings/inscribir', to: 'monitorings#inscribir', as: :inscribir_student_monitoring

, тогда Rails выдаст исключение следующим образом:

ArgumentError: Неверное имя маршрута, уже используется: 'inscribir_student_monitoring' Вы можете иметьопределили два маршрута с одним и тем же именем, используя опцию :as, или вы можете переопределить маршрут, уже определенный ресурсом с тем же именем.Что касается последнего, вы можете ограничить маршруты, созданные с помощью resources, как описано здесь: http://guides.rubyonrails.org/routing.html#restricting-the-routes-created

Поскольку ваши маршруты имеют другое имя , это не будетбеспокоиться.Хотя вы можете сократить свой код, используя match

match 'students/:student_id/monitorings/inscribir', to: 'monitorings#inscribir', via: [:get, :post]
...