我在rails应用程序中使用omniauth和koala来获取登录用户的朋友(和uid)列表。我想让用户开始输入朋友的姓名并进行自动完成工作,以便当用户选择朋友时,表单会将朋友的 uid 放入表单中的隐藏字段中。看起来应该是可能的,如果不容易的话。
另一个复杂之处是我使用的是haml,所以我对在同一个文档中编写haml、javascript 和ruby 并不完全满意。
这是 HAML
=form_for @nag do |f|
=f.hidden_field :user_id, value: current_user.id
=f.text_field :lendee_name, id: 'who', placeholder: 'Who owes you?'
%div#friend-list
=f.text_field :item, id: 'what', placeholder: 'What do they owe you?'
=f.text_field :due_date, id: 'when', placeholder: 'When is it due?'
=f.text_field :lendee_uid, id: 'lendee_uid', placeholder: 'Lendee uid?'
:javascript
var allFriends = #{@friends};
这是Javascript
$(function() {
$("#who").autocomplete({
source: allFriends,
appendTo: $("#friend-list"),
focus: function( event, ui ) {
$( "#who" ).val( ui.item.value );
return false;
},
position: { of: "#friend-list", at: "left top" }
}).keyup(function (e) { // Dismiss the typeahead dropdown when hitting enter
if(e.which === 13) {
$(".ui-menu-item").hide();
}
});;
});