如何使用nested_forms gem访问嵌套字段属性

时间:2017-07-19 14:52:23

标签: ruby-on-rails ruby

我在我的项目中使用nested_forms gem,nested_forms使用局部视图来渲染具有嵌套对象属性的行,这是我的部分视图代码:

<tr class="fields">
<td>
    <%= f.text_field :nombre, class: 'form-control craf' %>
</td>
<td>
    <% 
        concat f.select :idtipodocumento, CrTipoDocumento.all.collect {|p| [ p.nombre, p.id ] }, {prompt: 'Seleccione el tipo de documento'}, :class=>'form-control'
    %>
</td>
<td>
    <%= f.text_field :documento, class: 'form-control', maxlength: '50' %>
</td>
<% if current_user.email.include? '@cifco.gob.sv' %>
<td>
    <%= f.check_box :activo %>
</td>
<td>
    <%= f.check_box :impresa %>
</td>
<td>
    <%= f.check_box :extra %>
</td>
<% end %>
<td>
    <%= f.link_to_remove raw('<i class="fa fa-minus-circle" aria-hidden="true"></i>'), :class =>'btn btn-danger hidden-print' %>
</td>

以下是此部分呈现的视图的代码块:

        <tbody>
            <fieldset id="acreditados">
              <%= f.fields_for :cr_acreditados, :wrapper => false %>
            </fieldset>
        </tbody>

所以,我想要做的是评估是否&#39; impresa&#39; == false并且只有渲染它,但是如果尝试f.impresa它会说方法&#39; impresa&#39;不存在f

以下是表单完整代码:

  <%= nested_form_for(@cr_acreditacion_cliente, :validate => true) do |f| %>

    <% if @cr_acreditacion_cliente.acreditaciones == nil %>
    <% else %>
      <table class="table table-striped table-bordered table-hover" id="AC">
        <thead>
          <tr>
            <th>Evento</th>
            <th>Cliente</th>
            <th>Stand</th>
            <th>Acreditaciones</th>
            <th>Acreditaciones Disponibles</th>
            <th>Tipo de Acreditacion</th>
          </tr>
        </thead>

        <tbody>
          <td><%= @cr_acreditacion_cliente.cr_evento.nombre %></td>
          <td><%= @cr_acreditacion_cliente.cr_cliente.nombre %></td>
          <td><%= @cr_acreditacion_cliente.cr_stand.codigo %></td>
          <td><%= @cr_acreditacion_cliente.acreditaciones %></td>
          <td>
            <p hidden id="cnt"><%= @cr_acreditacion_cliente.acreditaciones %></p>
            <p id="acd">
              <%= @counter = @cr_acreditacion_cliente.acreditaciones - @cr_acreditacion_cliente.cr_acreditados.count %>
            </p>
          </td>
          <td><%= @cr_acreditacion_cliente.cr_tipocre.tipo %></td>
        </tbody>
      </table>


      <table class="table table-striped table-bordered table-hover" id="DAC">
        <thead>
          <tr>
            <th>Nombre</th>
            <th>Tipo de Documento</th>
            <th>Documento</th>
            <% if current_user.email.include? '@cifco.gob.sv' %>
              <th>Activo</th>
              <th>Impresa</th>
              <th>Extra</th>
            <% end %>
            <th class="hidden-print">Acciones</th>
          </tr>
        </thead>

        <tbody>
            <fieldset id="acreditados">
              <%= f.fields_for :cr_acreditados, :wrapper => false %>
            </fieldset>
        </tbody>
      </table>

      <div id="addBtn">
        <% if @counter >= 1 %>
          <p><%= f.link_to_add raw('<i class="fa fa-plus-circle" aria-hidden="true"></i>'), :cr_acreditados, id: 'btna', :class => 'btn btn-primary lta hidden-print', "data-target" => "#DAC" %></p>
        <% else %>
          <p class="text-center"><h3>No dispone de mas acreditaciones</h3></p>
        <% end %>
      </div>
    <div class="actions text-center">
      <%= f.submit "Guardar Credenciales", :class => 'btn btn-success hidden-print', data: { confirm: 'Favor verifique los datos antes de almacenarlos' }%>
    </div>
    <% end %>
  <% end %>

0 个答案:

没有答案