ruby-on-rails - 通过 Select2 在 Rails 表单中使用标签和 Ajax
问题描述
我有一个 Select2 字段,它使用 AJAX 调用收集平台上的用户:
<%= f.input :recipient_id, [], {}, {multiple: true, size: 10, id: 'select-guest', class: 'selectpicker',placeholder: true, required: true} %>
这很好用。但是我想让用户添加一个电子邮件地址,以防他/她希望联系的用户不在我的数据库中(然后控制器将检查数组元素是否包含 @ 用于电子邮件,或字符串用于 UUID)。建议我改用标签,我目前所处的位置:
<%= f.input :recipient_id, input_html: {class: 'multiple-input', multiple: "multiple"}, collection: User.all, label: false %>
使用以下JS
$(document).ready(function () {
$('#message_recipient_id').each(function () {
$(this).select2({
tags: true,
tokenSeparators: [','],
theme: 'bootstrap',
placeholder: '<%= t :Separated_by_comma %>'
});
});
});
显示效果很好。问题是:
如何使用当前的 AJAX 调用加载数据,而不是使用 User.all 加载所有用户?
此外,您可以看到用户名和名字没有显示(这是正常的)。
我的 Ajax 调用当前看起来像:
jQuery(document).ready(function () {
$("#select-guest").select2({
ajax: {
url: "/hk/invitations/search_invitation.json", //URL for searching companies
dataType: "json",
delay: 200,
data: function (params) {
return {
search: params.term, //params send to companies controller
};
},
processResults: function (data) {
return {
results: data
};
},
cache: true
},
allowClear: true,
minimumInputLength: 2,
maximumSelectionLength: 3,
placeholder: "..."
});
});
json文件是:
json.array! @people_and_list do |people_and_list|
json.id people_and_list.id
json.text people_and_list.full_name
end
变量@people_and_list
为:
@people_and_list = User.where.not(profile: "1").ransack(first_name_or_last_name_cont: params[:search].to_s).result
解决方案
推荐阅读
- c# - c#可以用同一个文件写入器单例同时写入多个文件吗
- javascript - 更新和更改视图的视图上的单选选项?
- javascript - 如何在 PHP 和 JavaScript 中进行重定向?
- c# - 如何检查不同 XML 文件中包含的 XML 节点是否相等?
- python - Python Sympy 模块 NoConvergence:收敛到根失败;尝试 n < 15 或 maxsteps > 50
- node.js - 查询内的MongoDB查询
- sql-server - 显示空白值的计算列 - SQL Server
- python - 为什么插入数据库时python比c ++快?
- python - Pyspark - 从每列中选择不同的值
- python - Python MySQLdb:是否可以在不解析的情况下插入游标对象?