2016-01-01 166 views
1

在我的應用程序中,我有一個編輯所有用戶的頁面,但是我希望它只需點擊一個提交按鈕即可更新用戶的詳細信息,但目前我可以只編輯一個,然後單擊「更新用戶」按鈕來更改該用戶的詳細信息。Rails - 用一個提交按鈕提交多個表單

_form.html.erb

<%= form_tag edit_user_path do |form| %> 
    <% @users.each do |user| %> 
    <%= form_for user do |f| %> 
     <% if @user.errors.any? %> 
     <div id="error_explanation"> 
      <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2> 
      <ul> 
      <% @user.errors.full_messages.each do |message| %> 
      <li><%= message %></li> 
      <% end %> 
      </ul> 
     </div> 
     <% end %> 
     <div class="field"> 
     <%= f.label :username %><br> 
     <%= f.text_field :username %> 
     </div> 
     <div class="field"> 
     <%= f.label :sunday %><br> 
     <%= f.text_field :sunday %> 
     </div> 
     <div class="field"> 
     <%= f.label :monday %><br> 
     <%= f.text_field :monday %> 
     </div> 
     <div class="field"> 
     <%= f.label :tuesday %><br> 
     <%= f.text_field :tuesday %> 
     </div> 
     <div class="field"> 
     <%= f.label :wednesday %><br> 
     <%= f.text_field :wednesday %> 
     </div> 
     <div class="field"> 
     <%= f.label :thursday %><br> 
     <%= f.text_field :thursday %> 
     </div> 
     <div class="field"> 
     <%= f.label :friday %><br> 
     <%= f.text_field :friday %> 
     </div> 
     <div class="field"> 
     <%= f.label :saturday %><br> 
     <%= f.text_field :saturday %> 
     </div> 
     <div class="actions"> 
     <%= f.submit %> 
     </div> 
    <% end %> 
    <% end %> 
    <%= submit_tag "Submit" %> 
<% end %> 

正如你可以看到submit_tag在代碼的底部也絕對沒有什麼,但是我想它更新所有用戶的詳細信息。任何幫助將不勝感激!

回答

1

反對:

<%= form_for user do |f| %> 

使用:

<%= fields_for "users[]", user do |f| %> 

之後,你將在每個user_ID的控制器參數值獲得:

"users"=>{"user_id1"=>{"attr1"=>"value1"}, "user_id2"=>{"attr1"=>"value1"} 

還要使可能的更新的集合對象的一種方式是將UsersController這樣的動作加入:

def update_collection 
    # Update users here 
end 

和更新路由在config/routes.rb

resources :users do 
    collection do 
    match 'update_collection', via: [:put, :patch] 
    end 
end 

,並在主窗體中使用正確的網址:

<%= form_tag update_collection_users_path, method: :put do |form| %> 
+0

使得提交按鈕做一些事情,但它會導致一個錯誤說'沒有路由匹配[POST]「/ admin/users/1/edit」' – coreypizzle

+0

嘗試將主窗體中的edit_user_path替換爲edit_users_path,我認爲問題在這裏。工作? – Mareq

+0

沒有遺憾,給出了一個未定義的本地變量錯誤 – coreypizzle

相關問題