rails3-jquery-autocomplete外键

时间:2012-06-15 16:59:38

标签: foreign-keys jquery-autocomplete ruby-on-rails-3.2

您好我需要帮助设置我的数据库中手动分配的外键的rails3-jquery-autocomplete gem。

以下是我的模型的样子

 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

我数据库中的users表包含所有列

预订控制器已

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表并按users表的登录列列出人员,但是这样一旦用户被选中,id就会被返回并存储为:reserver_id 。以前使用select字段的代码是

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

其中select_options方法在各个数组中创建登录字符串和id对的数组。

我知道解决方案可能非常简单,谢谢你的帮助......

1 个答案:

答案 0 :(得分:0)

我的问题很愚蠢但事实证明它与类别表使用自定义外键这一事实无关。我的第一个问题是使用表名的复数版本而不是单数。一旦我将所有对用户的引用更改为用户,我注意到javascript控制台没有向我抛出任何异常,所以我想我已经破坏了所有内容并且调用没有进行或者它正在通过并且它没有呈现正常。

控制台中存在正确的MYSQL调用证实了我的怀疑。就在那时我看到列表在我的页面右侧呈现,可能是由于其他地方发生了奇怪的样式。

底线是拥有自定义外键根本不会改变gem的用法。应使用原始表名。