代码之家  ›  专栏  ›  技术社区  ›  Trenton Tyler

选定值的字段

  •  0
  • Trenton Tyler  · 技术社区  · 6 年前

    我有一个表单,其中有一个字段作为助手,我需要在rails应用程序中获取每个字段的值。

    <%= form.fields_for :expenses do |expense| %>
          <%= render 'expense_fields', f: expense %>
    <% end %>
    <%= link_to_add_fields "Add field", form, :expenses %>
    

    费用字段.html.erb

    <div class="row">
      <div class="col-md-5">
        <div class="form-group">
            <%= f.label :expense_name %>
            <%= f.select(:expense_name, options_for_select([['Hotel', 'hotel'], 
            ['Registration', 'registration'], 
            ['Meals', 'meals'], 
            ['Flight', 'flight'], 
            ['Mileage', 'mileage'],
            ['Car Rental', 'car rental'],
            ['Parking', 'parking'],
            ['Traning', 'training']],), { include_blank: true }, id: 'principal_selection', class: 'form-control') %> 
        </div>
      </div>
        <% if current_user.admin? || current_user.principal? || current_user.super? %>
          <div class="col-md-3">
        <% else %>
          <div class="col-md-7">
        <% end %>
          <div class="form-group">
            <%= f.label :expense_cost %>
            <%= f.number_field :cost, class: 'form-control', placeholder: 'Cost', step: :any %>
          </div>
        </div>
      <% if current_user.principal? || current_user.admin? || current_user.super? %>
      <div class="col-md-4">
        <div class="form-group">
          <%= f.label :payment_type %>
          <%= f.select(:payment_type, options_for_select([['Out of pocket', 'Out of Pocket'], ['Corporate Card', 'Corporate Card'], ['PO', 'PO']], selected: "Half Day"), { include_blank: false }, class: 'form-control') %>
        </div>
      </div>
      <% end %>
    </div>
    

    selected: "#{@expense.expense_name}" 但是得到一个nil错误,因为@expense没有定义。因此,我进入pdforms控制器中的edit方法并尝试了以下方法:

    def edit
    @expenses = @pdform.expenses
    end
    

    没有结果所以我试了这个:

    def edit
    @expenses = @pdform.expenses
    @expenses.each do |ex| 
      @expense = ex
    end
    

    1 回复  |  直到 6 年前
        1
  •  0
  •   stef    6 年前

    当你使用 fields_for .object 在每个 field 实例。所以在这种情况下,使用:

    f.select(selected: f.object.expense_name  ...