Rails form_tag Ошибка перенаправления маршрута - PullRequest
1 голос
/ 20 февраля 2012

Привет, у меня есть form_tag, который я хочу перейти к определенному действию контроллера, который я реализовал:

<%= form_tag(:controller => "admins", :action => "check_in") do %>
      <%= hidden_field_tag :direction, params[:direction] %>
      <%= hidden_field_tag :sort, params[:sort] %>
      <p>
        <%= text_field_tag :search, params[:search] %>
        <%= submit_tag "Search", :name => nil %>
      </p>
<% end %>

Но это не работает, оно перенаправляет администраторам / check_in правильный маршрут,это тот, который я хочу перенаправить, но rails выдает ошибку «Нет совпадений маршрутов» / admins / check_in «».Я не понимаю, потому что этот маршрут правильный, если я вставлю в браузер "http://localhost:3000/admins/check_in", он работает. Как я могу исправить его, чтобы перенаправить действие администратора check_in?

1 Ответ

2 голосов
/ 20 февраля 2012

Я думаю, что это случай использования GET для маршрута и POST при отправке формы. Если вы запустите rake routes, вы увидите, что маршрут - это GET, верно? Когда форма отправляется, она отправляет запрос POST. Либо сделайте form_tag следующим образом:

form_tag({:controller => "admins", :action => "check_in"}, :method => "get")

или измените маршрут на POST в файле rout.rb следующим образом:

post "admins/check_in" => "admins#check_in"

Когда вы запускаете рельсы с rails s в терминале, вы можете видеть, какой запрос он получает, читая журнал запросов по мере поступления.

Надеюсь, это поможет, в противном случае:

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