2017-10-12 76 views
3

我有一個帶有複選框和單選按鈕的許多字段的表單。我希望在每個選項中添加一個「其他」選項。現在,如果用戶點擊其他選項,他應該被允許添加應該保存在數據庫中的新選項以備將來使用。向滑軌選擇/單選按鈕/複選框添加新選項

這裏是我當前的代碼:

<label> Goals: </label><br> 
<%= f.collection_check_boxes :goal_id, Admin::Goal.all, :id, :title, checked: @assessment.goal_id, :include_hidden => false do |b| %> 
    <%= b.label class:"label-checkbox" do %> 
    <%= b.check_box + b.text%> 
    <% end %> 
<% end %> 

我希望這個問題可能是其他人也和感謝幫助在您的幫助提前。 :)

+0

檢查我的解決方案 – krishnar

回答

2

ü需要定製collection_check_box這樣

<% other_options = [{id: "other",title: "other"}] %> 

<label> Goals: </label><br> 
<%= f.collection_check_boxes :goal_id, Admin::Goal.all + other_options, lambda{|a|a["id"]}, lambda{|a|a["title"], checked: @assessment.goal_id, :include_hidden => false do |b| %> 
    <%= b.label class:"label-checkbox" do %> 
    <%= b.check_box + b.object[:title]%> 
    <% end %> 
<% end %> 

我在這裏做

  • 合併other_option陣列和你的目標集合陣列什麼。
  • 其他數組不是關係所以你需要修改如何獲取標題,標題。所以我使用lambda來訪問它。
  • 如果您僅使用Goal,b.text將起作用。因爲我們正在使用我們的自定義哈希,即other_option數組,我們需要將值作爲b.object訪問,然後訪問title.This將適用於兩者。
+0

謝謝,這正是我想要的。 :) – Vishal