Ошибка rails heroku: маршрут не определен, но маршрут есть (страница, которую вы искали, не существует.) - PullRequest
0 голосов
/ 12 марта 2012

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

конечно у меня есть

  resources :adresses

в моих маршрутах и ​​всех действиях контроллера REST.

Теперь, на мой взгляд, у меня есть следующее утверждение:

<%= button_to "Edit", edit_adress_path(@adress), :class => "edit_adress funkybutton" %>

, который генерирует следующий html:

<form class="button_to" action="/adresses/7/edit?locale=en" method="post"><div><input type="submit" value="Edit" class="edit_adress funkybutton"><input type="hidden" value="d/s1KOUtYao+ieqJN3xAz2jrmGPcvF06LjKKHxnFc+o=" name="authenticity_token"></div></form>

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

The page you were looking for doesn't exist.

You may have mistyped the address or the page may have moved.

Когда я печатаю heroku logs, я получаю:

2012-03-12T18:49:02+00:00 app[web.1]: Started POST "/adresses/7/edit?locale=en" for 85.177.82.243 at 2012-03-12 11:49:02 -0700
2012-03-12T18:49:02+00:00 app[web.1]: 
2012-03-12T18:49:02+00:00 app[web.1]: 
2012-03-12T18:49:02+00:00 app[web.1]: ActionController::RoutingError (No route matches "/adresses/7/edit"):

что мне кажется очень странным. Еще более странно то, что когда я нажимаю в адресной строке браузера и нажимаю клавишу ВВОД, форма редактирования отображается очень хорошо. Так что это работает, но каждый раз, когда я нажимаю на кнопку, я получаю это сообщение об ошибке. Я понятия не имею, что может быть причиной ошибки, и надеюсь, что кто-нибудь может помочь. Спасибо!

Btw. Я на Rails 3.0.5

1 Ответ

3 голосов
/ 12 марта 2012

button_to создает запрос POST для /addresses/7/edit, для которого resources не определяет маршрут.Когда вы вручную переходите по ссылке в вашем браузере, это создает запрос GET, который направляет действие редактирования.

Вы можете изменить вызов button_to на метод GET:

<%= button_to "Edit", edit_adress_path(@adress), :class => "edit_adress funkybutton", :method => :get %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...