Я думаю, вы немного запутались между кодом, который выполняется на сервере и на клиенте. Помощник content_for
выполняется на сервере и, как вы знаете, сохраняет блок разметки в идентификаторе для последующего использования. Он может появиться в любом месте шаблона представления, но его вывод появляется только в том случае, если он получен в шаблоне или макете:
<%= yield :sidebar %>
& mdash; везде, где в шаблоне появляется этот оператор yield
, где будет вставляться разметка в блоке content_for :sidebar
.
Помните, что помощник form_for
выводит элемент HTML form
в клиентский веб-браузер, и другие вложенные в него элементы HTML передаются как часть этой формы. В приведенном выше коде у вас фактически есть две HTML-формы для случаев, но только в нижней есть кнопка, позволяющая отправить ее.
Чтобы часть вашей формы появлялась на боковой панели, вам нужно стилизовать ее, используя CSS. Таким образом, структурно поля формы будут находиться внутри одной формы, но визуально они не будут выглядеть так, как они.
Чтобы иметь структурное разделение на уровне разметки, вам нужно использовать две отдельные формы, одна из которых вложена в элемент боковой панели, и обе имеют кнопки отправки. Я сомневаюсь, что это эффект, который вы ищете.