1

嗨,我需要帮助设置 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

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

预订控制器有

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 表的 login 列列出人员,但是一旦用户被选中,id 就会返回并存储为 :reserver_id . 以前使用选择字段的代码是

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

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

我知道解决方案可能真的很简单,谢谢您的帮助...

4

1 回答 1

0

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

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

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

于 2012-06-16T19:23:44.797 回答