[英]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.