Button_to в Ruby on Rails плохой маршрут - PullRequest
6 голосов
/ 17 января 2011

Я пытаюсь использовать хелпер button_to rails. Я написал следующий код:

<%= button_to 'Edit Item', edit_item_path(@item), :class => 'mark-button' %>

и получил следующее сообщение об ошибке

No route matches "/items/1/edit"

Но когда я обновляю страницу, она переходит к соответствующему действию. URL страницы, которую я получаю, является localhost:3000/items/1/edit, который является правильным URL. Если я переключу команду button_to на link_to, страница будет загружена без ошибок. Значение этого кода:

<%= link_to 'Edit Item', edit_item_path(@item), :class => 'mark-button' %>

загружается нормально. Может быть, есть какая-то особенность button_to, о которой я не знаю, но я в растерянности.

Ответы [ 2 ]

5 голосов
/ 17 января 2011

Я думаю, что вы можете неправильно использовать button_to. Я всегда думал, что если вы ссылаетесь на действие редактирования, вы должны использовать link_to. Кажется, что кнопки предназначены для действий, которые требуют публикации / размещения данных, таких как обновление формы или удаление записи.

Обновление:

По умолчанию button_to использует POST вместо GET. Следовательно, это работает, когда вы просто посещаете URL (т.е. GET).

2 голосов
/ 07 января 2014

button_to по умолчанию POST, и link_to по умолчанию GET.

Если вам действительно нужно button_to, вы можете изменить метод по умолчанию на GET для редактирования и других ссылок.

Например:

<%= button_to 'Edit', edit_user_path(@user), :method => :get %>
...