Кнопка «Отправить форму» работает только после перезагрузки

У меня есть индексная страница, которая строит таблицу, и я пытаюсь разрешить пользователям редактировать строки в таблице. Я пытаюсь сделать это самым простым способом – без javascript, ajax и т. Д., Если Rails не предоставит его.

У меня есть таблица, отображающая штраф в методе индекса, и есть форма в качестве последней строки в таблице, которая может быть использована для добавления новой строки. Новая форма работает отлично. Каждая строка имеет ссылку редактирования, которая маршрутизируется на метод редактирования controllerа. Контроллер устанавливает редактируемый объект и отображает индекс, на этот раз с формой в строке, которая должна быть отредактирована. Моя проблема заключается в том, что эта форма не будет отправляться, но если обновить страницу, она будет отправлена.

Тот факт, что страница будет отправляться после обновления, очень сбивает с толку. Я не вижу, как обновление могло бы сделать что-то другое, а затем щелкнуть ссылку (она все равно должна проходить через ту же маршрутизацию, с теми же переменными?), И я не вижу никакой разницы в форме html до и после обновления , Есть идеи о том, что может произойти?

Я не уверен, какой код даже начать искать, но здесь идет;

index.html.erb

...             ... 

_form_in_table.html.erb

            

_bom_in_table.html.erb

          

boms_controller.rb

 ... def edit @bom = Bom.find(params[:id]) @li = @bom.line_item @boms = @li.boms.sorted_by_part_number @parts = Part.sorted_by_number render 'index' end ... 

Если это полезно для расшифровки кода / намерения, у меня есть коллекции line_items, parts и boms; line_item имеет множество boms, а line_item имеет много частей через boms. В дополнение к соотношению part / line у ​​boms есть количество. Bom сокращен для спецификации материалов. @li – это манипулятор line_item. Форма, с которой я сталкиваюсь, – это просмотр / добавление / редактирование коллекции boms (количества и частей), которые принадлежат к позиции.

ДОБАВЛЕНИЕ БУМАГИ

 Started GET "/line_items/8/boms" for 127.0.0.1 at 2013-10-14 14:27:27 -0400 Processing by BomsController#index as HTML Parameters: {"line_item_id"=>"8"} [1m[35mLineItem Load (0.0ms)[0m SELECT "line_items".* FROM "line_items" WHERE "line_items"."id" = ? LIMIT 1 [["id", "8"]] [1m[36mLineItemSubClass Load (1.0ms)[0m [1mSELECT "line_item_sub_classes".* FROM "line_item_sub_classes" WHERE "line_item_sub_classes"."id" = ? ORDER BY "line_item_sub_classes"."id" ASC LIMIT 1[0m [["id", 8]] [1m[35mLineItemClass Load (4.0ms)[0m SELECT "line_item_classes".* FROM "line_item_classes" WHERE "line_item_classes"."id" = ? ORDER BY "line_item_classes"."id" ASC LIMIT 1 [["id", 1]] Rendered shared/_error_messages.html.erb (3.0ms) [1m[36mBom Load (1.0ms)[0m [1mSELECT "boms".* FROM "boms" INNER JOIN "parts" ON "parts"."id" = "boms"."part_id" WHERE "boms"."line_item_id" = ? ORDER BY "parts".number ASC[0m [["line_item_id", 8]] [1m[35mPart Load (0.0ms)[0m SELECT "parts".* FROM "parts" WHERE "parts"."id" = ? ORDER BY "parts"."id" ASC LIMIT 1 [["id", 1]] Rendered boms/_bom_in_table.html.erb (96.0ms) [1m[36mPart Load (1.0ms)[0m [1mSELECT "parts".* FROM "parts" ORDER BY "parts".number ASC[0m Rendered boms/_form_in_table.html.erb (103.0ms) [1m[35m (24.0ms)[0m SELECT SUM(quantity * cost) AS sum_id FROM "parts" INNER JOIN "boms" ON "boms"."part_id" = "parts"."id" WHERE "boms"."line_item_id" = 8 Rendered boms/index.html.erb within layouts/boms (477.0ms) Rendered layouts/_shim.html.erb (1.0ms) Rendered layouts/_header.html.erb (0.0ms) Rendered layouts/_footer.html.erb (0.0ms) Rendered layouts/application.html.erb (69.0ms) Completed 200 OK in 671ms (Views: 601.0ms | ActiveRecord: 31.0ms) Started GET "/boms/22/edit" for 127.0.0.1 at 2013-10-14 14:28:13 -0400 Processing by BomsController#edit as HTML Parameters: {"id"=>"22"} [1m[36mBom Load (0.0ms)[0m [1mSELECT "boms".* FROM "boms" WHERE "boms"."id" = ? LIMIT 1[0m [["id", "22"]] [1m[35mLineItem Load (1.0ms)[0m SELECT "line_items".* FROM "line_items" WHERE "line_items"."id" = ? ORDER BY "line_items"."id" ASC LIMIT 1 [["id", 8]] [1m[36mLineItemSubClass Load (1.0ms)[0m [1mSELECT "line_item_sub_classes".* FROM "line_item_sub_classes" WHERE "line_item_sub_classes"."id" = ? ORDER BY "line_item_sub_classes"."id" ASC LIMIT 1[0m [["id", 8]] [1m[35mLineItemClass Load (0.0ms)[0m SELECT "line_item_classes".* FROM "line_item_classes" WHERE "line_item_classes"."id" = ? ORDER BY "line_item_classes"."id" ASC LIMIT 1 [["id", 1]] Rendered shared/_error_messages.html.erb (0.0ms) [1m[36mBom Load (1.0ms)[0m [1mSELECT "boms".* FROM "boms" INNER JOIN "parts" ON "parts"."id" = "boms"."part_id" WHERE "boms"."line_item_id" = ? ORDER BY "parts".number ASC[0m [["line_item_id", 8]] [1m[35mPart Load (0.0ms)[0m SELECT "parts".* FROM "parts" ORDER BY "parts".number ASC Rendered boms/_form_in_table.html.erb (25.0ms) [1m[36m (0.0ms)[0m [1mSELECT SUM(quantity * cost) AS sum_id FROM "parts" INNER JOIN "boms" ON "boms"."part_id" = "parts"."id" WHERE "boms"."line_item_id" = 8[0m Rendered boms/index.html.erb within layouts/boms (41.0ms) Rendered layouts/_shim.html.erb (0.0ms) Rendered layouts/_header.html.erb (1.0ms) Rendered layouts/_footer.html.erb (0.0ms) Rendered layouts/application.html.erb (54.0ms) Completed 200 OK in 113ms (Views: 104.0ms | ActiveRecord: 3.0ms) Started GET "/boms/22/edit" for 127.0.0.1 at 2013-10-14 14:28:37 -0400 Processing by BomsController#edit as HTML Parameters: {"id"=>"22"} [1m[35mBom Load (0.0ms)[0m SELECT "boms".* FROM "boms" WHERE "boms"."id" = ? LIMIT 1 [["id", "22"]] [1m[36mLineItem Load (0.0ms)[0m [1mSELECT "line_items".* FROM "line_items" WHERE "line_items"."id" = ? ORDER BY "line_items"."id" ASC LIMIT 1[0m [["id", 8]] [1m[35mLineItemSubClass Load (0.0ms)[0m SELECT "line_item_sub_classes".* FROM "line_item_sub_classes" WHERE "line_item_sub_classes"."id" = ? ORDER BY "line_item_sub_classes"."id" ASC LIMIT 1 [["id", 8]] [1m[36mLineItemClass Load (1.0ms)[0m [1mSELECT "line_item_classes".* FROM "line_item_classes" WHERE "line_item_classes"."id" = ? ORDER BY "line_item_classes"."id" ASC LIMIT 1[0m [["id", 1]] Rendered shared/_error_messages.html.erb (0.0ms) [1m[35mBom Load (1.0ms)[0m SELECT "boms".* FROM "boms" INNER JOIN "parts" ON "parts"."id" = "boms"."part_id" WHERE "boms"."line_item_id" = ? ORDER BY "parts".number ASC [["line_item_id", 8]] [1m[36mPart Load (0.0ms)[0m [1mSELECT "parts".* FROM "parts" ORDER BY "parts".number ASC[0m Rendered boms/_form_in_table.html.erb (5.0ms) [1m[35m (0.0ms)[0m SELECT SUM(quantity * cost) AS sum_id FROM "parts" INNER JOIN "boms" ON "boms"."part_id" = "parts"."id" WHERE "boms"."line_item_id" = 8 Rendered boms/index.html.erb within layouts/boms (27.0ms) Rendered layouts/_shim.html.erb (1.0ms) Rendered layouts/_header.html.erb (8.0ms) Rendered layouts/_footer.html.erb (0.0ms) Rendered layouts/application.html.erb (60.0ms) Completed 200 OK in 131ms (Views: 94.0ms | ActiveRecord: 2.0ms) Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2013-10-14 14:28:38 -0400 Started GET "/assets/custom.css?body=1" for 127.0.0.1 at 2013-10-14 14:28:38 -0400 Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:38 -0400 Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:38 -0400 Started GET "/assets/bootstrap-transition.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:38 -0400 Started GET "/assets/bootstrap-affix.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:38 -0400 Started GET "/assets/bootstrap-alert.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:38 -0400 Started GET "/assets/bootstrap-collapse.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:38 -0400 Started GET "/assets/bootstrap-modal.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:38 -0400 Started GET "/assets/bootstrap-carousel.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:39 -0400 Started GET "/assets/bootstrap-button.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:39 -0400 Started GET "/assets/bootstrap-dropdown.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:39 -0400 Started GET "/assets/bootstrap-scrollspy.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:39 -0400 Started GET "/assets/bootstrap-tab.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:39 -0400 Started GET "/assets/bootstrap-typeahead.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:39 -0400 Started GET "/assets/bootstrap-tooltip.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:39 -0400 Started GET "/assets/bootstrap-popover.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:39 -0400 Started GET "/assets/bootstrap.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:39 -0400 Started GET "/assets/turbolinks.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:39 -0400 Started GET "/assets/parts.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:39 -0400 Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2013-10-14 14:28:39 -0400 

Я считаю, что это проблема HTML, а не проблема с Rails. В этом обсуждении Форма внутри таблицы

не может быть помещена внутри

или

или

. После перемещения

чтобы обернуть таблицу и поместить элементы управления в соответствующую

форму.

Я до сих пор не понимаю, почему обновление страницы заставило форму работать, но …

Если это Rails 4, это, вероятно, из-за Turbolinks. Попробуйте положить

 data-no-turbolink="true" inside your body tag 

Это может сработать, это случилось однажды.

Этот тип ошибки чаще всего генерируется недействительным HTML. Различные источники ошибок могут быть следующими:

  • отсутствует < или >
  • HTML-тег не закрыт
  • сиротский тег закрытия HTML (в котором нет ни одного открытия); в сложных формах у меня были дополнительные с л ...
  • Формы, вложенные в tags table или tr (в пределах td разрешено)

Помощники формы должны быть правильно вложены, иначе эти причуды укусят вас ...

Попробуйте помещать данные-no-turbolink = “true” в ссылку, называемую табличной страницей.

   

Это работает.

Для рельсов 5 попробуйте использовать data: { turbolinks: false } внутри любых ссылок на страницу, содержащую форму.

Например: <%= link_to "Get in Touch", 'contact', data: { turbolinks: false } %>

  • Как использовать проблемы в Rails 4
  • Rails Дата ActiveRecord между
  • Как выразить запрос NOT IN с помощью ActiveRecord / Rails?
  • Не удается найти заголовок libpq-fe.h при попытке установить pg gem
  • Настройка Rails config.assets.precompile для обработки всех файлов CSS и JS в приложении / активах
  • Rails .where vs .find
  • Как вы справляетесь со вспышкой Rail с запросами Ajax?
  • Приложение Ruby on rails 4 не работает в iframe
  • Удалить ссылку отправляет «Get» вместо «Удалить» в режиме Rails 3
  • найти vs find_by vs где
  • Как настроить Log4r с Rails 3.0.x?
  • Давайте будем гением компьютера.