Ответ 1
Иисус Родригес прав относительно POST и GET, но если вам действительно нужна кнопка, вы можете просто переопределить метод по умолчанию:
<%= button_to "New User", new_user_path, :class => "button", :method => :get %>
У меня есть эта часть кода:
<%= link_to "New User", new_user_path, :class => "button" %><br />
который отлично работает, но когда я его изменяю,
<%= button_to "New User", new_user_path, :class => "button" %><br />
Я получаю эту ошибку
Нет совпадений маршрутов [POST] "/users/new"
Любая помощь вообще будет оценена.
Иисус Родригес прав относительно POST и GET, но если вам действительно нужна кнопка, вы можете просто переопределить метод по умолчанию:
<%= button_to "New User", new_user_path, :class => "button", :method => :get %>
"link_to" ищет /users/new, используя GET.
"button_to" ищет /users/new, используя POST
Если вы создаете маршруты для контроллера, используя:
resources :user
По умолчанию /users/new является GET, а не POST, поэтому вторая строка не находит никакого маршрута.
Если вы думаете изменить это действие на POST, я думаю, что вы должны забыть об этом.
Вместо того, чтобы принудительно использовать button_to для использования метода, отличного от значения по умолчанию, вы также можете отправить класс link_to.
<%= link_to "New User", new_user_path, :class => "button" %>
button_to по умолчанию - POST, а link_to по умолчанию - GET, поэтому links_to работал. Вы можете заставить button_to использовать GET:
<%= button_to "New User", new_user_path, :class => "button", :method => :get %>
Вы можете получить дополнительную информацию о параметрах button_to здесь: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to