在has_and_belongs_to_many关联上使用带有简单形式的rails3-jquery-autocomplete

时间:2013-02-26 09:08:06

标签: ruby-on-rails undefined jquery-autocomplete simple-form has-and-belongs-to-many

我希望有一个表单,群组可以添加他们的兴趣,这个表单应该帮助他们自动完成。 由于这是一个多对多的关系,我不明白如何实现它

class Group < ActiveRecord::Base
  attr_accessible :description, :name, :project_id, :interests

  before_save :get_next_available_name

  has_many :users
  belongs_to :project
  has_and_belongs_to_many :interests
end

class Interest < ActiveRecord::Base
  attr_accessible :name

  has_and_belongs_to_many :groups

end

在视图中我有:

<%= simple_form_for @group do |f| %>
  <%= f.autocomplete_field :interests, autocomplete_interest_name_groups_path %>
  <%= f.submit "Interesse eintragen" %>
<% end %>

当然我输入了“rails g autocomplete:install” 我可能需要编辑路线并将其添加到routes.rb:

resources :groups do
  get :autocomplete_interest_name, :on => :collection
end

更新: 正如Saurabh建议的那样,我把他“自动完成:兴趣,:名字”放在控制器中,而不是在模型中。

但我现在有两个问题: 第一:没有自动完成功能。 第二:添加'ruby'兴趣并提交表单后:在输入字段中写有:

[#<Interest id: 38, name: "ruby", created_at: "2013-02-28 09:25:53", updated_at: "2013-02-28 09:25:53">]

但当然这个领域本身应该是空的。

enter image description here enter image description here

如果这个gem与Rails 3.2不兼容,有人应该告诉我......

1 个答案:

答案 0 :(得分:3)

在控制器中定义autocomplete并将其从模型中删除为:

class GroupsController < ApplicationController
  autocomplete :interest, :name
  # ...
  # ...
end

更新:

根据您的问题更新,您现在需要做的是:

您的观点

<%= simple_form_for @group do |f| %>
  <%= f.autocomplete_field :interests, autocomplete_interest_name_groups_path %>
  <%= f.submit "Interesse eintragen" %>
<% end %>

来自 rails3 jquery autocomplete sources的更多内容。