форма rails больше не работает

#ruby-on-rails #routes #put

#ruby-on-rails #маршруты #поместить

Вопрос:

Эта форма для обновления рабочего элемента больше не работает.

Форма генерируется в erb-файле с помощью этой команды:

 <%= form_for(@work_item, :url => admin_workitem_update_path) do |f| %>
  

Сгенерированный тег выглядит следующим образом:

 <form accept-charset="UTF-8" action="/admin/workitem/define/14" class="edit_workitem" enctype="multipart/form-data" id="edit_workitem_14" method="put">
</form>
  

Маршрут выглядит следующим образом:

 admin_workitem_update PUT    /admin/workitem/define/:workitem_id(.:format)
  

Продолжение: использование :method => :post в теге form работает.

Почему rails генерирует атрибут метода put?

Комментарии:

1. У вас есть конкретный вопрос о каком-то коде, который не работает? Chrome никак не может удалить функцию из Rails. Rails добавляет скрытое поле в форму, а затем обрабатывает его на стороне сервера, полностью независимо от браузера.

2. @Beerlington : :)) конечно, chrome не стал бы что-то удалять из rails. возможно, вам захочется прочитать вопрос несколько раз, прежде чем что-то писать. Кроме того, какое отношение имеет скрытое поле к чему-либо?

3. Я прочитал вопрос, но на самом деле это был не вопрос… Скрытое поле используется для указания приложению, какой метод REST использовать. Поскольку PUT поддерживается не всеми браузерами, он подделывает его, включая скрытое поле, и преобразует его на стороне сервера. Rails не полагается на браузер для поддержки чего-либо, кроме GET и POST, поэтому, даже если ни один браузер не поддерживает PUT или DELETE, он все равно будет работать.

4. Вот еще немного информации из руководства по rails: guides.rubyonrails.org/… Я предлагаю вам прочитать это.

5. Привет, Бирлингтон, извините за комментарий с чтением вопроса — должно быть, немного устал. забавно то, что скрытое поле так и не было сгенерировано, но тег form помещается в качестве атрибута метода. <форма принимает кодировку=»UTF-8″ action=»/admin/workitem/define/14″ class=»edit_workitem» enctype=»multipart/form-data» id=»edit_workitem_14″ method=»put»> </форма>

Ответ №1:

НИКОГДА не используйте знак равенства перед формой. У меня такая же проблема с мгновенной реализацией Rails. Руководство по документации rails следует использовать без <amp;=

 <%= form_for(@work_item, :url => admin_workitem_update_path) do |f| %>
  

используйте вместо:

 <% form_for(@work_item, :url => admin_workitem_update_path) do |f| %>
  

это все

Комментарии:

1. правильно, и это должно сработать, дайте нам знать, работает ли это или нет