Rails 4自动填充表单

时间:2016-09-28 21:46:36

标签: javascript jquery ruby-on-rails ruby-on-rails-4 autocomplete

我正在尝试在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 CompanyCompany 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”的时候没有任何东西可以自动完成。

enter image description here

我正在呈现的自动填充字段的页面源如下所示:

<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的新手。

1 个答案:

答案 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