向rails选择/单选按钮/复选框添加新选项

时间:2017-10-12 06:01:07

标签: ruby-on-rails select checkbox radio-button

我有一个包含复选框和单选按钮的多个字段的表单。我希望添加一个"其他"每个选项。现在,如果用户单击其他选项,则应该允许他添加应保存在数据库中以供将来使用的新选项。

这是我目前的代码:

<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 %>

1 个答案:

答案 0 :(得分: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数组和目标集合数组。
  • 其他数组不是Relation,因此您需要修改id,title的获取方式。所以我使用lambda来访问它。
  • 如果您只使用目标,
  • b.text将起作用。由于我们使用自定义散列,即other_option数组,我们需要将值作为b.object访问,然后访问title。这对两者都有效。