POST Routing Issue для пользовательской формы - PullRequest
0 голосов
/ 02 апреля 2019

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

Форма / представление выглядит следующим образом: views / survey_request / translation.html.erb

<%= form_for @survey_request, url: survey_requests_confirm_path do |f| %>
  <p>Your Email Address: <%= f.text_field :customer_email %></p>
  <%= f.hidden_field :survey_token, value: @survey_request.survey_token %>
  <p>Your survey token: <%= @survey_request.survey_token %></p>
  <p><%= f.submit %></p>
<% end %>

Мои соответствующие маршруты в файле rout.rb выглядят следующим образом:

get 'survey/:id', to: 'survey_requests#confirmation'
put 'survey_requests/confirmation', to: 'survey_requests#confirmation'
put 'survey_requests/confirm', to: 'survey_requests#confirm'

В survey_requests_controller.rb у меня есть метод, определенный

def confirm
  #code here to confirm the users email and token
end

Когда я запускаю приложение, форма application.html.erb отображается нормально, чтобы включить маркер, переданный ему.Когда я отправляю форму, я получаю следующую ошибку:

No route matches [POST] "/survey_requests/confirm"

Однако, когда я прокручиваю вниз на той же странице ошибки, он показывает маршрут:

survey_requests_confirm_path    PUT /survey_requests/confirm(.:format)  survey_requests#confirm

Есть предложения?Спасибо!

1 Ответ

1 голос
/ 02 апреля 2019

Проблема в том, что определенный маршрут использует метод PUT, а маршрут формы использует метод POST.

Либо измените маршрут на POST с помощью post 'survey_requests/confirm', to: 'survey_requests#confirm', либо добавьте method: :put в форму form_for @survey_request, url: survey_requests_confirm_path, method: :put, чтобы методы соответствовали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...