ruby-on-rails - 如何在 Ruby on Rails 中为复选框添加多个选项?

标签 ruby-on-rails

对于 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/

相关文章:

ruby-on-rails - Nginx + Phusion 乘客 try_files

ruby-on-rails - 在Ruby on Rails中添加ID或类?

ruby-on-rails - 连接失败,数据库名称为 '.'

ruby-on-rails - 无法启动 Puma Ubuntu 16.04

jquery - 我这里有 OpenLayers/jQuery 冲突吗?

ruby-on-rails - 使用 HTML5 地理定位获取用户位置并保存到数据库的 Rails 应用程序

ruby-on-rails - 从 Rails 应用程序中重新加载 nginx 配置

ruby-on-rails - Rails rake 任务在运行时不断消耗更多 RAM(使用 Mechanize 抓取网站)

ruby-on-rails - 使用 friendly_id 一段时间后启用历史记录

ruby-on-rails - 找出 Heroku 当前使用的 DB