我安装了rails-4-jquery-autocomplete gem。我在我的注册页面(由设计完成)上使用它,用户选择他们的学校。我目前遇到的问题是,我想要显示一个文本,例如,“找不到学校时,我的学校没有列出”。目前,默认显示文本“没有现有匹配”,我想更改该文本。
查看gem的文档,我没有找到在没有找到结果时设置文本的方法。有没有办法覆盖gem并返回一个不同的字符串,如果它没有找到任何结果?或者,我需要修改jquery调用吗?
SuggestionController
class SuggestionsController < ApplicationController
autocomplete :school, :name, :full => true
end
查看
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div>
<%= f.label :school_id %>
<%= f.autocomplete_field :school_name, autocomplete_school_name_suggestions_path %>
</div>
<% end %>
答案 0 :(得分:3)
第61行here上的autocomplete-rails-uncompressed.js文件插入了"no existing match"
消息:
if(arguments[0].length == 0) {
arguments[0] = []
arguments[0][0] = { id: "", label: "no existing match" }
}
看起来该字符串是硬编码的,因此您无法在不需要额外努力的情况下自定义空消息。
一个简单的解决方案是删除行
//= require autocomplete-rails
从您的application.js
文件然后将autocomplete-rails-uncompressed.js
文件复制并粘贴到您的javascripts文件夹中,并将"no existing match"
字符串更改为您的首选短语。这种方法的缺点是,如果将来要更新此gem,则需要更新修改后的javascript文件。
一个更好,更复杂的解决方案是分叉gem并改变javascript逻辑以接受"no existing match"
以外的选项。一旦实现,您就可以提交拉取请求,以将新的和改进的逻辑合并到主服务器中。
答案 1 :(得分:0)
在https://github.com/bigtunacan/rails-jquery-autocomplete使用宝石的官方版本,您将获得开箱即用的此功能。
您只需将文字设置为所需的值,如下所示。
jQuery.railsAutocomplete.options.noMatchesLabel = "New Text Value Here";
或者,如果您不想显示任何消息,则可以完全禁用它。
jQuery.railsAutocomplete.options.showNoMatches = false;
可以将以下内容添加到application.js文件的底部;或者(更好)作为assets/javascripts
中的单独.js文件,然后该文件需要作为指令添加到application.js文件后引用rails-jquery-autocomplete的指令。
$(document).ready(function(){
jQuery.railsAutocomplete.options.noMatchesLabel = "New Text Value Here";
})
答案 2 :(得分:0)
如果您只需要为一个输入字段禁用无匹配消息,则可以将数据属性添加到特定字段:
self.assertTrue(mock_client.__init__.called)