我正在尝试将两个模型与has_many
和belongs_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
答案 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,那真的很棒:)