Rails表单中的jQuery自动完成
我有一个电子邮件的Rails表单,我想在收件人字段中自动完成。以下是我所做的:Rails表单中的jQuery自动完成,jquery,ruby-on-rails,forms,autocomplete,Jquery,Ruby On Rails,Forms,Autocomplete,我有一个电子邮件的Rails表单,我想在收件人字段中自动完成。以下是我所做的: = f.label :recipient_id, "Send to:" = text_field_tag :recipient_id, nil :javascript $(function() { $( "#recipient_id" ).autocomplete({ source: "#{escape_javascript url_for(:action => 'recipient_
= f.label :recipient_id, "Send to:"
= text_field_tag :recipient_id, nil
:javascript
$(function() {
$( "#recipient_id" ).autocomplete({
source: "#{escape_javascript url_for(:action => 'recipient_autocomplete',
:controller => 'sent')}",
minLength: 2,
select: function( event, ui ) {
$('input#recipient_id').attr('value', ui.item.value);
ui.item.value = ui.item.label
}
});
});
在我的控制器中,我有:
def recipient_autocomplete
@users= User.all(:conditions => ['first_name LIKE ? OR last_name LIKE?',
"%#{params[:term]}%", "%#{params[:term]}%"])
render :json => @users.collect {|x| {:label=>x.full_name, :value=>x.id}}.compact
end
json调用工作正常,显示全名OK。以下是要素:
<input type="text" name="recipient_id" id="recipient_id" class="ui-autocomplete-input"
autocomplete="off" role="textbox" aria-autocomplete="list"
aria-haspopup="true" value="158">
但是,当我单击Send(相当于submit)时,将发送Receipent全名而不是Receipent_id
我如何告诉Rails表单选择输入字段的值(在上面的示例中是158)而不是它的标签?Rails对此有很好的解释。错误HTML规范说
文本字段的文本是它将返回的值。但是您可以使用隐藏的\u字段
来传递\u id
,就像这样
= f.label :recipient_id, "Send to:"
= text_field_tag :recipient_name, nil
= hidden_field_tag :recipient_id, nil
:javascript
$(function() {
$( "#recipient_id" ).autocomplete({
source: "#{escape_javascript url_for(:action => 'recipient_autocomplete',
:controller => 'sent')}",
minLength: 2,
select: function( event, ui ) {
$('input#recipient_name').val(ui.item.label);
$('input#recipient_id').val(ui.item.value);
}
});
});
那是从