Ruby on Rails多选下拉列表

时间:2018-03-30 06:31:04

标签: html ruby-on-rails

首先,我需要在Rails中实现这个HTML表单,它是一个可以多选的语言下拉列表。其次,存储用户选择的多种语言的最佳方法是什么?

<div class="button-group">
  <label class="form-control" data-toggle="dropdown">Language <span class="fa fa-angle-down"></span> </label>
    <ul class="dropdown-menu2 dropdown-menu">
      <li>
        <a href="#" class="small" data-value="" tabIndex="-1"><input type="checkbox" /> No Other Language</a>
      </li>
      <li>
        <a href="#" class="small" data-value="arabic" tabIndex="-1"><input type="checkbox" /> Arabic</a>
      </li>
      <li>
        <a href="#" class="small" data-value="french" tabIndex="-1"><input type="checkbox" /> French</a>
      </li>
      <li>
        <a href="#" class="small" data-value="spanish" tabIndex="-1"><input type="checkbox" /> Spanish</a>
      </li>
  </ul>
</div>

1 个答案:

答案 0 :(得分:0)

  • 首先存储用户语言的多个值,创建与用户模型具有一对多关系的语言模型。

    class Language < ActiveRecord::Base
           belongs_to :user
    end

  • 要存储语言选项,您可以在用户模型中创建枚举:

    class User < ActiveRecord::Base
           has_many :languages
           enum language: {:english=>1, :arabic=>2, :french=>3, :spanish=>4}
    end

  • 并在表单中添加多选项try(也是一个不错的选择是使用check_box):

    <%= f.select :languages, {}, User.languages.each { |k, v| [k, v]}, :multiple => true %>

    <% User.languages.each do |k, v| %> <%= check_box :languages, k.humanize, value: v %> <%= label :languages, k.humanize %> <% end %>