我目前有一个我希望我的用户能够过滤的事件列表。每个活动都有一个表演者,我存储每个活动的表演者 ID。
我的用户能够通过用户 ID 进行搜索对用户来说不是很友好,因为这对他们来说意义不大,所以我希望他们能够通过表演者的名字进行搜索。
我之前创建了一个使用select2 rails gem的简单搜索表单,我视图中的代码如下所示:
<%= select_tag(:performer, options_from_collection_for_select(@performer,
:id, :profile_name, :selected => params[:performer]), :include_blank => true, id: "user", :class => "form-control") %>
<script type="text/javascript">
$(document).ready(function() {
$('select#user').select2({
allowClear: true,
placeholder: "Choose a profile name",
});
});
这将允许我的用户能够搜索和选择一个名称,它会找到与他们的 user_id 相关的相关事件。
我现在想使用filterrifc gem在用户键入时实时更新搜索并显示结果,但我无法弄清楚如何修改我的代码以与 gem 一起工作。
如果我按照文档中的示例进行简单的文本搜索,模型中的范围将如下所示:
scope :performer, lambda { |query|
where("LOWER(events.performer) LIKE ?", "%#{query}%")}
但是我无法弄清楚如何将 select2 gem 与 filterrific gem 结合起来以获得我想要的结果。