簡體   English   中英

Rails一次編輯多個記錄

[英]Rails editing multiple records at once

我覺得這可能真的很簡單,但是我做的不對,所以我在應用程序中擁有一個設置頁面,並且希望每個設置都像一個鍵值存儲,例如:

+-------------------+--------------------------------+
| setting           | value                          |
+-------------------+--------------------------------+
| twitter_username  | something                      |
+-------------------+--------------------------------+
| facebook_url      | http://facebook.com/someguy    |
+-------------------+--------------------------------+

我的表單如下所示:

<% form_tag set_admin_settings_path, :method => :put do %>
  <ol>
  <% for setting in @settings %>
    <li class="field">
      <label><%= setting.setting_name.humanize %></label>
      <%= text_field_tag "[setting_value][]", setting.setting_value %>
    </li>
  <% end %>  
    <li class="submit">
      <%= submit_tag "Update settings" %>
    </li>
  </ol>

<% end %>

一切都很好,但是當我嘗試保存表單時,什么也沒有保存:(

這就是我認為的樣子,我對您的表格進行了一些修改。 這還假定您不對設置對象進行任何驗證,對於以單個形式的Setting類的多個實例,驗證和顯示錯誤將很棘手,但是可以做到。 我的示例不會顯示任何錯誤。

配置/ routes.rb中

  map.namespace(:admin) do |admin|
    admin.resources :settings, :collection => { :set => :put }
  end

應用程序/控制器/管理/ settings_controller.rb

def set
  #this is what I think your action should do
  params[:settings].each do |setting|
    @setting = Setting.find(setting[:id])
    @setting.update_attributes(setting)
  end

  redirect_to admin_settings_path
end

應用程序/視圖/管理/設置/ index.html.erb

<% form_tag set_admin_settings_path, :method => :put do %>
  <ol>
  <% for setting in @settings %>
    <li class="field">
      <label>
        <%= setting.setting_name.humanize %>
      </label>
      <!-- settings[][field_name] will group the settings objects in params -->
      <%= hidden_field_tag("setting_#{setting.id}_id", 
                           setting.id,
                           :name => 'settings[][id]') %>
      <%= text_field_tag("setting_#{setting.id}_setting_value", 
                         setting.setting_value,
                         :name => 'settings[][setting_value]) %>
    </li>
  <% end %>  
    <li class="submit">
      <%= submit_tag "Update settings" %>
    </li>
  </ol>

<% end %>

我認為您需要將設置名稱與其值相關聯,也許可以嘗試類似

<%= text_field_tag "[#{setting.setting_name}][]", setting.setting_value %>

暫無
暫無

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

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