簡體   English   中英

Rails:如何讓表單提交記錄數組?

[英]Rails: How do I make a form submit an array of records?

我需要制作一個提交記錄數組的表單。 我正在使用 rails 2.3.11 並嘗試按照此處一對多部分中的說明進行操作: http://api.rubyonrails.org/v2.3.8/classes/ActionView/Helpers/FormHelper.html

但是,當我這樣做時,會出現錯誤,或者表單僅提交數組中的最后一條記錄。

這不起作用,因為@query[:filters] 是一個數組,所以fields_for 會拋出異常:

  <% form_for :aquery, @query, :url => {:action => 'index'} do |a| %>
    <% a.fields_for :filters, @query[:filters] do |f| %>
      <p>
        <%= f.select :field, @fields %>
        <%= f.select :logic, ["all", "is", "is not", "none"]%>
        <%= f.text_field :arg, :size => 30 %>
      </p>
    <% end %>
    <%= submit_tag l(:button_apply) %>
  <% end %>

這不起作用,因為它忽略了@query[:filters] 的內容,並且無論數組有多大,都只呈現一組字段:

    <% a.fields_for :filters do |f| %>

這不起作用,因為它只會提交數組中的最后一項:

<% form_for :aquery, @query, :url => {:action => 'index'} do |a| %>
  <% @query[:filters].each do |filter| %>
    <% a.fields_for :filters, filter do |f| %>
      <p>
        <%= f.select :field, @fields %>
        <%= f.select :logic, ["all", "is", "is not", "none"]%>
        <%= f.text_field :arg, :size => 30 %>
      </p>
    <% end %>
  <% end %>
  <%= submit_tag l(:button_apply) %>
<% end %>

您需要運行過濾器並手動進行索引。

<% form_for :aquery, @query, :url => {:action => 'index'} do |a| %>
  <% @query[:filters].each_with_index do |filter, i| %>
    <% a.fields_for :filters, filter, :index => i do |f| %>
      <p>
        <%= f.select :field, @fields %>
        <%= f.select :logic, ["all", "is", "is not", "none"]%>
        <%= f.text_field :arg, :size => 30 %>
      </p>
    <% end %>
  <% end %>
  <%= submit_tag l(:button_apply) %>
<% end %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM