使用acts_as_taggable_on gem时自动完成标签名称?

时间:2016-07-23 16:20:02

标签: ruby-on-rails autocomplete acts-as-taggable-on

所以我使用this gem进行自动完成。如使用部分所述,它要求我们在模型的控制器中添加autocomplete :classname, :method行,其属性我们正尝试自动完成。例如(从文档中提取):

模型

class Brand < ActiveRecord::Base
end

create_table :brand do |t|
  t.column :name, :string
end

控制器

class ProductsController < Admin::BaseController
  autocomplete :brand, :name
end

路线

resources :products do
  get :autocomplete_brand_name, :on => :collection
end

我使用acts_as_taggable_on gem作为我的代码。每个代码都有一个name属性,我试图自动完成该属性。现在,我不确定在TagsController的autocomplete :classname, :method行中使用什么类名。该类的名称是ActsAsTaggableOn :: Tag,但是当我使用它时出错:

TagsController

class TagsController < ApplicationController

  autocomplete :ActsAsTaggableOn::Tag, :name

  def index
    @tags = ActsAsTaggableOn::Tag.all
  end

  def show
    @tag =  ActsAsTaggableOn::Tag.find_by(name: params[:name])
    @posts = Post.tagged_with(@tag.name).paginate(page: params[:page], per_page: 10).order('created_at DESC')
  end

end

路线

resources :tags, param: :name, only: [:index, :show] do
  get :autocomplete_ActsAsTaggableOn::Tag_name, :on => :collection
end

rake routes

后出错

TypeError: :ActsAsTaggableOn is not a class/module

我尝试了tagtags作为班级名称。然而,他们并没有回复错误,但他们根本没有工作。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

product: pattern: /{_locale}/product/{id} defaults: { _controller: FLYBookingsBundle:Post:product } requirements: _locale: en|fr defaults: { _locale: en } 应该做的诀窍:)。或者尝试autocomplete ActsAsTaggableOn::Tag, :name

问题是你使用的是符号而不是常量 - 类名是常量......