Rails 使用 filterrific 选择 2 gem
Rails select2 with filterrific gem
我目前有一个事件列表,我希望我的用户能够过滤这些事件。每个事件都有一个表演者,我为每个事件存储表演者 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",
});
});
这将允许我的用户能够搜索和 select 一个名字,它会找到与其 user_id 相关的相关事件。
我现在想使用 filterrifc gem 在用户输入时实时更新搜索并显示结果,但我不知道如何修改我的代码以与 gem.
如果我按照文档中的示例进行简单的文本搜索,模型中的范围将如下所示:
scope :performer, lambda { |query|
where("LOWER(events.performer) LIKE ?", "%#{query}%")}
但我不知道如何将 select2 gem 与 filterrific gem 结合起来以获得我想要的结果。
这似乎成功了。
<%= f.select :performer, options_from_collection_for_select(@performer, :profile_name,:name), {:include_blank => true}, id: "user", class: "form-control", data: { placeholder: "Choose a performer" } %>
我目前有一个事件列表,我希望我的用户能够过滤这些事件。每个事件都有一个表演者,我为每个事件存储表演者 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",
});
});
这将允许我的用户能够搜索和 select 一个名字,它会找到与其 user_id 相关的相关事件。
我现在想使用 filterrifc gem 在用户输入时实时更新搜索并显示结果,但我不知道如何修改我的代码以与 gem.
如果我按照文档中的示例进行简单的文本搜索,模型中的范围将如下所示:
scope :performer, lambda { |query|
where("LOWER(events.performer) LIKE ?", "%#{query}%")}
但我不知道如何将 select2 gem 与 filterrific gem 结合起来以获得我想要的结果。
这似乎成功了。
<%= f.select :performer, options_from_collection_for_select(@performer, :profile_name,:name), {:include_blank => true}, id: "user", class: "form-control", data: { placeholder: "Choose a performer" } %>