2014-02-13 18 views
1

使用simple_form和Rails 3.2.13,我想渲染一個允許編輯整個系統設置表的表單。基本上它是一個帶有category_id,名稱和值列的表 - 只有值是可編輯的。顯示屏將按類別名稱對設置進行分組。所有設置值將立即可編輯,並通過單擊按鈕進行保存。我不知道怎麼去simple_form做我想要的東西,這是我開始:使用simple_form和Rails編輯整個表格3

型號樣品(@model)

{ 
    "categories":[ 
    { 
     "category_name":"Category 1", 
     "settings":[ 
     { 
      "id":1, 
      "system_setting_category_id":1, 
      "name":"First Name", 
      "key":"first_name", 
      "value":null 
     }, 
     { 
      "id":2, 
      "system_setting_category_id":1, 
      "name":"Last Name", 
      "key":"last_name", 
      "value":null 
     } 
     ] 
    }, 
    { 
     "category_name":"Category 2", 
     "settings":[ 
     { 
      "id":7, 
      "system_setting_category_id":2, 
      "name":"Some Setting", 
      "key":"some_setting", 
      "value":null 
     } 
     ] 
    } 
    ] 
} 

查看

<%= simple_form_for @model, :as => "model" do |f| %> 
    <table> 
     <col style="width: 200px"/> 
     <col /> 
     <thead> 
      <th scope="col">Name</th> 
      <th scope="col">Value</th> 
     </thead> 

     <%= f.simple_fields_for :categories do |c| %> 
      <tbody> 
       <tr> 
        <td colspan="2"><h2><%= c.label :name %></h2></td> 
       </tr> 
       <% c.simple_fields_for :settings do |s| %> 
        <tr> 
         <td><%= s.label :name %></td> 
         <td> 
          <%= s.input :id, :as => :hidden %> 
          <%= s.input :value %> 
         </td> 
        </tr> 
       <% end %> 
      </tbody> 
     <% end %> 
    </table> 
<% end %> 

回答

1

我推薦使用沒有物體的簡單形式,

SimpleForm without for (non model form)

通行證的東西到PARAMS像params[:change_all] = true #make sure to allow it in params

然後控制器:

if params[:change_all] = true 
Model.update_all(value: params[:value]) 

給一個去,應該工作正常。

+0

我來看看 - 謝謝。 –