form_with с использованием вложенного частичного рендеринга содержимого формы вне таблиц <form></form> элементов, рендеринг содержимого в строку таблицы - PullRequest
0 голосов
/ 09 апреля 2020

ПОЛНОЕ РЕПРОДУКЦИОННОЕ ПРИЛОЖЕНИЕ ЗДЕСЬ:

https://github.com/jasonfb/nested-forms-issue1

ЭТО БЫЛО ПРЕДСТАВЛЕНО ЖЕЛЕЗНОДОРОЖНОЙ КОМАНДЕ КАК ЖУК

https://github.com/rails/rails/issues/38919

Я вижу странное поведение на Rails 6.0.2.2

Мой код хамла такой, но я также получаю этот результат, используя синтаксис Erb .

// панель инструментов / скины / правка. js .erb

$(".skins-table tr[data-id=<%= @skin.id %>]").html("<%= j render partial: 'dashboard/skins/edit', locals: {skin: @skin} %>")

// панель инструментов / скины / _edit.haml


Edit
= skin.name

for
= skin.account.company_name

= form_with do |f|
  = render partial: "form",  locals: {skin: skin, f: f}

// панель инструментов /skins/_list.haml

Edit
= skin.name

for
= skin.account.company_name

= form_with model: skin, url: edit_dashboard_skin_path(skin) do |f|
  = render partial: "form",  locals: {skin: skin, f: f}

// dashboard / skins / _form.haml

= f.text_field :name
%label
  Skin Name


= f.text_area :header
%label
  Header


= f.text_area :footer
%label
  Footer


= f.text_area :native_scss
%label
  Native SCSS


= f.text_field :background_color
%label
  Background Color

= f.submit "Save", class: "btn btn-primary"

Обратите внимание, что частичное визуализируется в форме, поэтому вы ожидаете

<form action="/dashboard/skins/2/edit" accept-charset="UTF-8" data-remote="true" method="post">
   <input type="hidden" name="_method" value="patch">
   <input type="hidden" name="authenticity_token" value="67DBVfnagSrI+DZMxfv/calLBjWq8EV2YFqMDI8oJN/ltqp1jLh3Oa64gZBRhmY25nQUsZEuFK8P/UgCLII8AA==">
   /* other form fields here */
</form>

Однако, похоже, что Rails рендерит ВСЕ содержимое формы, включая скрытые поля и любой произвольный текст, который я вставляю в блок form_with do, как братья и сестры формы, а не потомки форма .

На самом деле происходит следующее:

enter image description here

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

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

1 Ответ

0 голосов
/ 10 апреля 2020

Исправлено!

Моя проблема заключалась в том, что я рендерил некоторый контент в строку таблицы <tr> контент, который не был обернут внутри <td>

, никогда не рендерил контент в <tr> без упаковки этого содержимого внутри <td>

этого искаженного содержимого нарушало форму, в результате чего содержимое выходило за пределы формы, как описано выше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...