【问题标题】:Rails 4 Autocomplete FormRails 4 自动完成表单
【发布时间】:2017-02-07 01:33:27
【问题描述】:

我正在尝试在我的 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_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 的新手。

【问题讨论】:

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


    【解决方案1】:

    在网上搜索了更多的例子后,我找到了答案。

    首先,我有点不对劲。 autocomplete :company, :name 需要在我的公司控制器中,get :autocomplete_company_name, :on =&gt; :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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      相关资源
      最近更新 更多