Подтвердить что ты не робот

Rails: Почему пользовательский URL-адрес изменяется, когда вызывается "render" new'`?

У меня есть контроллер, который контролирует форму контакта на странице контактов. Внутри файла routes.rb у меня есть строка, которая говорит match '/contact', :to => 'feedback#new'. Теперь, когда форма заполнена правильно, все работает нормально; URL-адрес "/контакт". Однако, когда форма не заполнена правильно, мой контроллер renders 'new' и url изменяется от '/contact' до '/feedback'. Может ли кто-нибудь сказать мне, почему это происходит, и как я могу это исправить, чтобы, если проверки активированы и страница отображается, URL будет /contact еще, а не /feedback? Спасибо!

Мой код контроллера: enter image description here

4b9b3361

Ответ 1

match '/contact', :to => 'feedback#new'

Этот маршрут будет соответствовать только /contact до FeedbackController#new.

Вы хотите добавить, чтобы совместить часть "post" с FeedbackController#create

match '/contact', :to => 'feedback#create', :via => :post, :as => :post_contact
# change :as => to whatever path for this you'd like to use, ex :as => :create_contact

Ваша форма теперь изменится на

= form_for(@feedback), :url => post_contact_path do |f|

Просто используя по умолчанию form_for попытается создать путь от resources в вашем routes.rb. И я предполагаю, что маршрут resources :feedback, который, конечно же, создаст маршруты, которые выглядят как /feedback.