Формы подачи рельсов - PullRequest
       1

Формы подачи рельсов

1 голос
/ 23 апреля 2010

У меня есть простая форма для ввода сведений о новом деле (kase), он работает хорошо, и нажав кнопку «Сохранить», информация сохраняется и переносит пользователя на страницу show.html.erb. Тем не менее, я хотел переместить часть формы на боковую панель - чтобы немного упростить просмотр и использование для пользователя, однако, когда я переместил раздел на боковую панель - все, что было введено во время создания или редактирования в этой боковой панели поля игнорируются. Любая идея, как сохранить поля в боковой панели, но включить их, как и раньше?

<% content_for :header do -%>
    Cases
<% end -%>

<% form_for(@kase) do |f| %>
  <%= f.error_messages %>

<!-- #START SIDEBAR -->
<% content_for :sidebar do -%>
<% if @kase.avatar.exists? then %>
<%= image_tag @kase.avatar.url %>
<% else %>
<p style="font-size:smaller"> You can upload an icon for this case that will display here. Usually this would be for the year number icon for easy recognition.</p>
<% end %>

    <div class="js_option">
    <h2>Financial Options</h2><p class="finance_showhide"><%= link_to_function "Show","Element.show('finance_showhide');" %> / <%= link_to_function "Hide","Element.hide('finance_showhide');" %></p>
    </div>

<div id="finance_showhide" style="display:none">

<ul id="kases_new_finance">

  <li>Invoice Number<span><%= f.text_field :invoicenumber %></span></li>
  <li>Net Amount<span><%= f.text_field :netamount %></span></li>
  <li>VAT<span><%= f.text_field :vat %></span></li>
  <li>Gross Amount<span><%= f.text_field :grossamount %></span></li>
  <li>Date Closed<span><%= f.text_field :dateclosed %></span></li>
  <li>Date Paid<span><%= f.text_field :datepaid %></span></li>

</ul>

</div>
<% end -%>

<!-- #END SIDEBAR -->

<% form_for (@kase), :html => { :multipart => true } do |f|  %>

  <ul id="kases_new">

  <li>Job Ref.<span><%= f.text_field :jobno %></span></li>

  <li>Case Subject<span><%= f.text_field :casesubject %></span></li>

  <li>Transport<span><%= f.text_field :transport %></span></li>

  <li>Goods<span><%= f.text_field :goods %></span></li>

  <li>Date Instructed<span><%= f.date_select :dateinstructed %></span></li>

  <li>Case Status<span><%= f.select "kase_status", ['Active', 'On Hold', 'Archived', 'Invoice Sent'] %></span></li>

  <li>Client Reference<span><%= f.text_field :clientref %></span></li>

  <li>Client Company Name<span><%= f.text_field :clientcompanyname %></span></li>

  <li>Client Company Address<span><%= f.text_field :clientcompanyaddress %></span></li>

  <li>Client Company Fax<span><%= f.text_field :clientcompanyfax %></span></li>

  <li>Case Handler Name<span><%= f.text_field :casehandlername %></span></li>

  <li>Case Handler Tel<span><%= f.text_field :casehandlertel %></span></li>

  <li>Case Handler Email<span><%= f.text_field :casehandleremail %></span></li>

  <li>Claimant Name<span><%= f.text_field :claimantname %></span></li>

  <li>Claimant Address<span><%= f.text_field :claimantaddress %></span></li>

  <li>Claimant Contact<span><%= f.text_field :claimantcontact %></span></li>

  <li>Claimant Tel<span><%= f.text_field :claimanttel %></span></li>

  <li>Claimant Mob<span><%= f.text_field :claimantmob %></span></li>

  <li>Claimant Email<span><%= f.text_field :claimantemail %></span></li>

  <li>Claimant URL<span><%= f.text_field :claimanturl %></span></li>

  <li>Comments<span><%= f.text_field :comments %></span></li>

</ul>

  <p>
    <%= f.submit "Create" %>
  </p>
<% end %><% end %>

<%= link_to 'Back', kases_path %>

1 Ответ

0 голосов
/ 23 апреля 2010

Я думаю, вы немного запутались между кодом, который выполняется на сервере и на клиенте. Помощник content_for выполняется на сервере и, как вы знаете, сохраняет блок разметки в идентификаторе для последующего использования. Он может появиться в любом месте шаблона представления, но его вывод появляется только в том случае, если он получен в шаблоне или макете:

<%= yield :sidebar %>

& mdash; везде, где в шаблоне появляется этот оператор yield, где будет вставляться разметка в блоке content_for :sidebar.

Помните, что помощник form_for выводит элемент HTML form в клиентский веб-браузер, и другие вложенные в него элементы HTML передаются как часть этой формы. В приведенном выше коде у вас фактически есть две HTML-формы для случаев, но только в нижней есть кнопка, позволяющая отправить ее.

Чтобы часть вашей формы появлялась на боковой панели, вам нужно стилизовать ее, используя CSS. Таким образом, структурно поля формы будут находиться внутри одной формы, но визуально они не будут выглядеть так, как они.

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

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