2011-04-19 50 views
0

我試圖兩款車型一起has_manybelongs_to用Rails3中,jQuery的自動完成沿聯繫,但我似乎無法得到它從vocab表拉任何數據。麻煩與Rails3中,jQuery的自動完成

我想用'vocab'表中的數據自動填充'技能'字段。我可以將技能提交得很好,並在「技能」表中正確保存,自動完成是唯一令我困擾的事情。

我將不勝感激任何幫助。我只將代碼簡化爲相關代碼。作爲說明,我確實已經正確安裝了插件,html正在輸出正確的JS和輸入標籤。

在此先感謝:)任何幫助,非常感謝。

users_controller.rb

class UsersController < ApplicationController 

autocomplete :vocab, :name 

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

end 

user.rb

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

skill.rb

class Skill < ActiveRecord::Base 
    belongs_to :user 
end 

_form.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 %> 

_skill_fields.html.erb

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

的routes.rb

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

數據庫

user 
    -id 

skills 
    -user_id 
    -skill_name 

vocab 
    -name 

回答

0

就像一個想法..:在你的代碼

,它看起來像您有多個自動完成字段:

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

如果這些領域都具有相同的HTML「ID」和「名稱'屬性(這很可能發生),js可能無法獲得您想要的字段。

所以,只是爲了澄清: 1.在您的服務器日誌中,您是否看到實際到達您的控制器的請求? (users_autocomplete_vocab_name_path) 2.如果您在視圖中僅保留一個自動填充字段,所有內容都會更改嗎?

只是一個小紙條。如果你的應用程序的技能少於100-200,你可以將所有這些作爲json輸出到一些隱藏的div中,使用jquery解析它並使autocompletion在本地工作。它會更快地工作,並且可以避免對Web服務器和數據庫的額外請求。我不得不在前一段時間實現相同的功能(自動填充用戶的朋友的姓名)。我已經做到這一點,如果用戶少於250個朋友 - 本地自動完成,其他 - 從服務器自動完成。順便說一句,我已經使用jquery-ui自動完成,真的很好的東西,如果你喜歡javascript :)

+0

謝謝,弗拉德 - 我會試試這個。不幸的是,我們將有超過10,000條,所以本地不是一個選項:/ – stewart715 2011-04-19 20:19:25

+1

原來,我是一個白癡。我正在使用一個損壞的jQuery文件。的Bleh。 – stewart715 2011-04-19 23:35:56