Получение формы для использования: method =>: delete (rails) - PullRequest
9 голосов
/ 09 октября 2011

У меня есть корзина, которая содержит много line_items.Я хотел бы иметь кнопку "удалить" рядом с каждой позицией, которая после нажатия удаляет line_item из корзины.

Я знаю, что могу сделать это с помощью метода button_to, но я бы хотел использовать form_for, потому что я хотел бы изменить атрибуты родительского объекта line_item одновременно (каждый элемент line_item также принадлежитКонечно, и я хотел бы сказать родителю курса, что его больше нет в корзине).

Вот мой код с использованием form_for:

<%= form_for(line_item, :method => :delete, :remote => true) do |f| %>
<%= f.submit :value => "Delete" %>
<% end %>

Документация ruby ​​говорит, что простое добавление: method =>: delete должно работать (http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for),, но отображаемый html не совсем правильный.Это все еще

<input name="_method" type="hidden" value="put">

Но это должно быть:

<input name="_method" type="hidden" value="delete">

Что я делаю не так?

1 Ответ

12 голосов
/ 19 ноября 2011

У Марка Нидхэма есть сообщение в блоге , в котором говорится о том, почему :method => delete в form_for не работает. Он говорит

Оказывается, "form_for" ожидает, что ": метод" будет предоставлен как часть правой руки. большинство аргументов как часть хэша с ключом ‘: html’.

Так что вам нужно изменить код с:

<%= form_for(line_item, :method => :delete, :remote => true) do |f| %>

до:

<%= form_for(line_item, :html => { :method => :delete, :remote => true }) do |f| %>

Я попробовал это в приложении Rails 3.0, и сгенерированный HTML был:

<input type="hidden" value="delete" name="_method">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...