rails3-jquery-autocomplete问题

时间:2011-04-19 18:02:33

标签: jquery ruby-on-rails ruby ruby-on-rails-3 rubygems

我正在尝试将两个模型与has_manybelongs_to一起使用以及使用rails3-jquery-autocomplete,但我似乎无法从{{1}中提取任何数据} table。

我正在尝试使用'vocab'表中的数据自动填充'技能'字段。我可以很好地提交技能,并且可以在“技能”表中正确保存,自动完成是唯一困扰我的事情。

我希望任何帮助。我将代码浓缩为相关代码。作为一个注释,我确实安装了正确的插件,html正在输出正确的JS和输入标签。

提前致谢:)非常感谢任何帮助。

users_controller.rb

vocab

user.rb

class UsersController < ApplicationController

autocomplete :vocab, :name

  def new
    @user = User.new
    3.times do
        skill = @user.skills.build
    end
  end

end

skill.rb

class User < ActiveRecord::Base     
    has_many :skills, :dependent => :destroy
    accepts_nested_attributes_for :skills       
end

_form.html.erb

class Skill < ActiveRecord::Base   
  belongs_to :user
end

_skill_fields.html.erb

<%= form_for(@user) do |f| %>
  <% f.fields_for :skills do |builder| %>
    <%= render "skill_fields", :f => builder %>
  <% end %>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

的routes.rb

<p>
  <%=f.label :skill_name, "Skill" %>
  <%=f.autocomplete_field :skill_name, users_autocomplete_vocab_name_path %>
</p>

数据库

MyApp::Application.routes.draw do
  get 'users/autocomplete_vocab_name'
end

1 个答案:

答案 0 :(得分:0)

就像一个想法..:

在您的代码中,您看起来有多个自动填充字段:

<%=f.autocomplete_field :skill_name, users_autocomplete_vocab_name_path %>

如果这些字段都具有相同的html'id'和'name'属性(最有可能发生),则js可能无法获得所需的字段。

所以,只是为了澄清: 1.在您的服务器日志中,您是否看到该请求实际到达您的控制器? (users_autocomplete_vocab_name_path) 2.如果您在视图中只留下一个自动填充字段,那么会发生什么变化吗?

只是一个小小的音符。如果你的应用程序中的技能少于100-200,你可以将所有这些作为json输出到一些隐藏的div,用jquery解析它并使自动完成在本地工作。它将更快地工作,您将避免对Web服务器和数据库的额外请求。我不得不在不久前实现相同的功能(自动完成用户的朋友名称)。我已经做到这一点,如果用户有少于250个朋友 - 在本地自动完成,否则 - 从服务器自动完成。顺便说一句,我使用过jquery-ui自动完成功能,如果你喜欢javascript,那真的很棒:)