2012-06-15 47 views
1

嗨我需要幫助設置與我的數據庫中手動分配的外鍵的rails3-jquery-autocomplete gem。rails3-jquery-autocomplete外鍵

這裏是我的模型看起來像

class User < ActiveRecord::Base 
    has_many :reservations, :foreign_key => 'reserver_id' 
    attr_accessible :login, :first_name, :last_name 
end 

class Reservation < ActiveRecord::Base 
    belongs_to :reserver, :class_name => 'User' 
    attr_accessible :reserver, :reserver_id, :reserver_login 
end 

我的數據庫中的用戶表有所有的列

保留控制器具有

autocomplete :users, :login 

的routes.rb有

resources :reservations do 
    get :autocomplete_users_login, :on => :collection 
end 

而在保留查看我有這個

 <%= f.autocomplete_field :reserver_id, autocomplete_users_login_reservations_path %> 

現在,當我嘗試和測試它,我看到調用在我的JavaScript控制檯正在取得,但我得到的錯誤500。例如我試圖尋找XNO它位於我的用戶數據庫的登錄列中。

GET http://0.0.0.0:3000/reservations/autocomplete_users_login?term=xno 500 (Internal Server Error) jquery.js:8241 
    jQuery.ajaxTransport.send jquery.js:8241 
    jQuery.extend.ajax jquery.js:7720 
    jQuery.each.jQuery.(anonymous function) jquery.js:7246 
    jQuery.extend.getJSON jquery.js:7263 
    a.railsAutocomplete.fn.extend.init.a.autocomplete.source autocomplete-rails.js:17 
    $.widget._search jquery-ui.js:6547 
    $.widget.search jquery-ui.js:6540 
    (anonymous function) jquery-ui.js:6335 

這是否與我在我的數據庫中使用外鍵的事實有關?如果是,我應該如何構建我的路線。我正在關注gem文檔,並試圖設置它,以便我可以查找用戶表並按users表的登錄列列出用戶,但這樣id將返回並存儲爲:一旦選擇了用戶,就會將其儲存爲:reserver_id 。與選擇字段一起工作的以前的代碼是

<%= f.select :reserver_id, User.select_options, :prompt => true %> 

其中select_options方法在單個數組中創建登錄字符串和id對的數組。

我知道,解決方案可能是很容易的,感謝你的幫助......

回答

0

我的問題是愚蠢的,但事實證明,它沒有什麼做與類別表中使用自定義的外國事實鍵。我的第一個問題是使用表格名稱的複數版本而不是單數。一旦我將用戶的所有引用更改爲用戶,我注意到,JavaScript控制檯沒有在我身上拋出任何異常,所以我認爲我已經破壞了所有內容,並且調用沒有進行或者正在進行,並且它不是正在呈現正常。

在控制檯中存在正確的MYSQL調用證實了我的懷疑。那時我看到列表正在渲染到我的頁面右側,可能是因爲其他地方發生了奇怪的樣式。

底線有一個自定義的外鍵,根本不會改變寶石的用法。應該使用原始表名稱。