2012-06-15 74 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调用证实了我的怀疑。那时我看到列表正在渲染到我的页面右侧,可能是因为其他地方发生了奇怪的样式。

底线有一个自定义的外键,根本不会改变宝石的用法。应该使用原始表名称。