Почему я получаю ошибку No Route Matches Error в Rails? - PullRequest
1 голос
/ 30 декабря 2011

Я получаю эту ошибку:

Started POST "/admin/reports/2/backfill" for 127.0.0.1 at Thu Dec 29 16:09:00 -0500 2011

ActionController::RoutingError (No route matches "/admin/reports/2/backfill"):

когда я отправляю эту форму:

<%=form_for @report, {:url => report_backfill_path(@report.id), :method => :post} do |f| %>
    <%=label_tag(:days, "number of days to backfill")%>
    <%=select_tag(:days, options_for_select((1..100).to_a.map{|i| [i,i]}))%>
    <%=f.submit "backfill!" %>
<% end %>

, но маршрут определен, проверьте вывод из моей команды rake routs:

report_backfill POST   /admin/reports/:report_id/backfill(.:format)    {:controller=>"reports", :action=>"backfill"}

Страница, содержащая эту форму, отображается нормально, только когда я публикую ее, я получаю сообщение об ошибке.

Есть идеи?

1 Ответ

0 голосов
/ 30 декабря 2011

Поскольку вы используете form_for @report и @report - существующую модель, она генерирует помощники PUT в скрытых полях, что заставляет механизм маршрутов думать, что это запрос PUT.

На самом деле, чтобы следовать соглашениям рельсов, так как вы вызываете дополнительный метод в существующем отчете (даже если побочным эффектом может быть создание объектов), я бы изменил маршрутизацию на использование :put вместо :post и оставьте форму в покое.

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