目前,我有一个带有100+记录的模型。我有第二个模型,第一个模型的has_one。在创建第二个模型的表单中,我使用collection_select调用第一个模型。用户最终不得不滚动并查看每条记录。是否有一个可搜索的collection_select或其他形式的助手,可以使这成为一个更好的体验?以下是我目前的解决方案:
<%= form.collection_select :thing_id, Thing.all, :id, :name, {class: "form-control"} %>_form.html.erb
<%= 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 %>如果需要的话,我很乐意包括任何其他代码。
发布于 2022-05-23 13:15:12
您可以使用select2 Select2代替下拉框,它还包含一个用于筛选数据和其他特性的搜索框,例如延迟加载下拉选项。检查一下https://select2.org/getting-started/basic-usage
https://stackoverflow.com/questions/72279590
复制相似问题