首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于大型数据集,有什么更好的collection_select方法?

对于大型数据集,有什么更好的collection_select方法?
EN

Stack Overflow用户
提问于 2022-05-17 19:19:31
回答 1查看 35关注 0票数 1

目前,我有一个带有100+记录的模型。我有第二个模型,第一个模型的has_one。在创建第二个模型的表单中,我使用collection_select调用第一个模型。用户最终不得不滚动并查看每条记录。是否有一个可搜索的collection_select或其他形式的助手,可以使这成为一个更好的体验?以下是我目前的解决方案:

代码语言:javascript
复制
  <%= form.collection_select :thing_id, Thing.all, :id, :name, {class: "form-control"} %>

_form.html.erb

代码语言:javascript
复制
<%= form_with(model: order) do |form| %>
  <% if order.errors.any? %>
    <div style="color: red">
      <h2><%= pluralize(order.errors.count, "error") %> prohibited this order from being saved:</h2>

      <ul>
        <% order.errors.each do |error| %>
          <li><%= error.full_message %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

  <div class="form-group">
    <%= form.label 'Status:' %>
    <%= form.collection_select :order_status_id, OrderStatus.all, :id, :status, @order.persisted? ? {class: "form-control"} : {:selected => 1}, {class: "form-control"} %>
  </div>
  <div>
    <%= form.label :subject, style: "display: block" %>
    <%= form.text_field :subject %>
  </div>

  <div>
    <%= form.label :body, style: "display: block" %>
    <%= form.text_area :body %>
  </div>

  <div>
    <%= form.label 'Asset:' , style: "display: block" %>
    <%= form.collection_select :thing_id, Thing.all, :id, :name, {class: "form-control"} %>
  </div>

  <div class="form-group">
    <%= form.label :assigned_to %>
    <%# form.collection_select :assigned_to_id, User.all, :id, :email, {:include_blank => true}, {class: "form-control"} %>
    <%= form.collection_select :assigned_to_id, User.all, :id, :email, {:prompt => true}, {class: "form-control"} %>
  </div>

  <div class="mb-3">
    <%= form.label :images, class: "form-label" %>
    <%= form.file_field :images, {multiple: true, class: "form-control", id: "formFileMultiple", type: "file"} %>
  </div>

  <%= form.hidden_field :requested_by_id, value: current_user.id %>

  <div>
    <%= form.submit %>
  </div>
<% end %>

如果需要的话,我很乐意包括任何其他代码。

EN

回答 1

Stack Overflow用户

发布于 2022-05-23 13:15:12

您可以使用select2 Select2代替下拉框,它还包含一个用于筛选数据和其他特性的搜索框,例如延迟加载下拉选项。检查一下https://select2.org/getting-started/basic-usage

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72279590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档