簡體   English   中英

如果您不能嵌套HTML表單,如何提交多個選擇?

[英]If you can't nest HTML forms, how can you submit multiple selections?

因此,例如,我有一個表格,其中每一行都有一個復選框。 現在,我添加了功能,以便能夠使用內置的rails表單幫助程序刪除多個選定的行。 問題是,我還需要能夠“禁用所選”和“啟用所選”行。

 <%= form_tag sccm_destroy_multiple_url , method: :delete do %>
 .... some table rows and data
 <%= check_box_tag "ID[]", group.id %>
 ... some more rows

<%= button_tag "Delete Selected", type: 'button submit', class: "btn btn-danger",data: {confirm: "Are you sure you want to delete these groups?"} do %>                          

<i class="fa fa-trash-o"></i> Delete Selected
<%end%>
<%end%>

現在,我需要在“禁用選定的對象”上放置另一個按鈕,但是我不能這樣做,因為它將嵌套表單,並且表單是存儲多個我知道的復選框ID的唯一方法。

基本上,rails通過從name屬性創建數組和嵌套哈希來解決HTML中的這一限制:

<input type="text" name="dogs[0][breed]" value="Husky">
<input type="text" name="dogs[1][breed]" value="Shiba Inu">

rails將這些參數解釋為:

"dogs" => {
  "0" => {
    "breed" => "Husky"
  },
  "1" => {
    "breed" => "Shiba Inu"
  },
}

通常,您將使用fields_for ,它為您提供了一個特殊的“范圍”表單構建器實例:

<%= forms_for(@adaption_agency) do |k| %>
   <%= f.fields_for(:dogs) do |doggy_fields| %>
     <%= doggy_fields.text_field :breed %>
   <% end %>
<% end %>

在您的情況下,您可以創建一個update_multiple路由,並將fields_for與記錄數組一起使用。

但是我會考慮使用ajax代替,以允許用戶僅使用標准CRUD操作就可以在同一頁上處理多個記錄。 它比嘗試將所有內容都粉碎成大型動作要簡單得多。

<%= dogs.each do |doggy| %>
   <%= form_for(doggy), class: 'doggy-form' do |f| %>
      <%= f.text_input :breed %>
   <% end %>
   <%= button_to('Delete', dog_path(doggy), method: :delete, class: 'doggy-form') %>
<% end %>

請注意,這將為每種類型的動作創建表格。

暫無
暫無

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

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