对于 Ruby on Rails 专家来说,这可能是一个 super 简单的答案。我有一个表单,需要添加一个包含多个项目的复选框。我处理以下代码的时间比我愿意承认的时间要长得多:
<%= form_for :lead, url: something, html: {id: 'product-form'} do |f|%>
<div class="row">
<div class="col-md-12">
<div class="form-group">
<%= f.label :product%>
<%= f.check_box :product, {multiple:true}, "option", "option2", :class => 'form-control'%>
</div>
</div>
</div>
<% end %>
使用此代码,我收到错误“参数数量错误(5 for 1..4)”。
基本上我只是希望有人能够选择多个选项。我还尝试过以下方法:
<div class="row">
<div class="col-md-12">
<div class="form-group">
<%= f.label :product%>
<%= f.check_box :option1, "Option1" :class => 'form-control'%>
<%= f.check_box :option2, "Option2", :class => 'form-control'%>
</div>
</div>
</div>
我得到了令人愉快的““Option1”的未定义方法‘merge’:String”。我缺少什么来将值与标签关联起来?
最佳答案
我使用 Rails 5.1.6,这就是我为复选框添加多个选项的方法。我还将它放在下拉菜单中。
在迁移文件中:
t.string :skills
在我的 Controller “tasks_controller.rb”中:
def task_params
params.require(:task).permit(:work_type, :title, :post, {skills: []})
end
在我的模型“task.rb”中,我做了:
validates :skills, presence: true
serialize :skills, JSON
我在目录“app/model/concerns/”中创建了一个模块 mobilephones_data.rb,它将复选框的所有选项保存为可以轻松编辑的数组。
在 app/model/concerns/mobilephones_data.rb 中我写道:
module Mobilenphones_Data
Activities = [
'Amazon Kindle', 'Blackberry', 'iPad', 'iPhone', 'Mobile Phone', 'Nokia',
'Palm', 'Samsung'
]
end
这会将模块数组中的所有数据作为复选框选项放入复选框下拉列表中。在我的表格中我做了:
<div class="card">
<a class="card-link card-header" data-toggle="collapse" href="#collapseOne">
Mobile Phones
</a>
<div id="collapseOne" class="collapse" data-parent="#accordion">
<div class="card-body">
<% Mobilenphones_Data::Activities.each do |activity| %>
<div id="skill_list" class="col-lg-3 col-md-4 col-sm-12 col-12">
<%= f.check_box :skills, { multiple: true }, activity, false %>
<%= activity %>
</div>
<% end %>
</div>
</div>
</div> <!--bottom-->
</div>
在我看来“show.html.erb”:
<% @name_of_model.skills.each do |skill| %>
<%= skill %>
<% end %>
关于ruby-on-rails - 如何在 Ruby on Rails 中为复选框添加多个选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47797819/