我正在尝试在rails应用程序中实现自动完成表单。
到目前为止,我已经完成了以下安装步骤。
添加了Gemfile:
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'rails4-autocomplete'
Application.js补充道:
//= require jquery
//= require jquery_ujs
//= require jquery-ui/autocomplete
//= require autocomplete-rails
在我的模特中,我有一份工作和一家公司。 Job belongs_to Company
和Company has_many Jobs
。
在我的routes.rb中我有:
resources :companies
resources :jobs do
get :autocomplete_company_name, :on => :collection
end
乔布斯控制器添加到顶部:
autocomplete :company, :name
所有作业都包含日期,然后是公司,联系人,工作地点等表格的外键。在作业新的_form上我有:
<%= form_for(@job) do |f| %>
<%= f.hidden_field :date, :value=>Time.now %>
<%= f.hidden_field :user_id, :value=>current_user.id %>
<%= f.fields_for :company, @company do |company| %>
<%= company.autocomplete_field :name, autocomplete_company_name_jobs_path %>
我可以在表单上呈现自动填充字段,但是当我开始输入时,没有任何内容出现。 Home Depot是我的测试数据库中的虚拟公司之一,但你可以看到我输入“Ho”的时候没有任何东西可以自动完成。
我正在呈现的自动填充字段的页面源如下所示:
<input data-autocomplete="/jobs/autocomplete_company_name" type="text" name="job[company][name]" id="job_company_name" />
我一直在遵循此处的文档和说明:https://github.com/bigtunacan/rails-jquery-autocomplete
我有什么遗失的吗?比如我不包含的一些javascript文件或我需要在我的application.js中运行的脚本/函数?或者我的application.html中的javascript_include_tag?
我是使用jQuery和javascript的新手。
答案 0 :(得分:0)
在网上搜索更多例子之后,我找到了答案。
首先,我稍微离开了。 autocomplete :company, :name
需要在我的公司控制器中,并且get :autocomplete_company_name, :on => :collection
需要嵌套在我的companies
资源中。
我不知道为什么他们的Gem文档会遗漏这个,但是,为了使gem工作,我必须创建自己的js.erb文件并添加一个javascript函数。
在app/assets/javascripts
我创建了company.js.erb
并添加了以下功能:
$(function() {
var companies = <%Company.all.collect{|company| company.name}%>
$( "#jobCompany" ).autocomplete({
source: companies
});
});
这就是所有缺失的东西,一旦我恢复了服务器,一切都正常工作。
注意,如果您希望自动填充建议的格式很好,那么请在app/assets/stylesheets/application.scss
添加*= require jquery-ui