2016-07-23 8 views
0

So verwende ich this gem für Autovervollständigung. Wie im Abschnitt Usage angegeben, müssen wir eine autocomplete :classname, :method Zeile im Controller des Modells hinzufügen, dessen Attribut wir versuchen, automatisch zu vervollständigen. So zum Beispiel (extrahiert aus dem docs):Autovervollständigung von Tag-Namen bei Verwendung von "acts_as_taggable_on"?

Modell

class Brand < ActiveRecord::Base 
end 

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

-Controller

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

Routen

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

Ich verwende den Edelstein acts_as_taggable_on für meine Tags. Jedes Tag hat ein name Attribut, das ich versuche, automatisch zu vervollständigen. Jetzt bin ich nicht sicher, welcher Klassenname in der autocomplete :classname, :method Zeile in TagsController verwendet werden soll. Der Name der Klasse ist ActsAsTaggableOn :: Tag, aber ich erhalte eine Fehlermeldung, wenn ich, dass:

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 

Routen

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

Fehler nach rake routes

TypeError: :ActsAsTaggableOn is not a class/module

Ich habe sowohl tag als auch tags als Klassenname versucht. Sie haben keinen Fehler zurückgegeben, aber sie haben einfach nicht funktioniert. Jede Hilfe wird geschätzt!

+0

Können Sie den genauen Code Ihres Controllers posten? Die Spalte in ': ActsAsTaggableOn' sieht seltsam aus. –

+0

@MarekTakac Ich habe den Beitrag mit TagsController aktualisiert. Der ProductsController ist eigentlich nur ein Beispiel-Controller, der aus den gem docs extrahiert wurde, die ich zur Verfügung gestellt habe, um anzuzeigen, wo die 'Autocomplete'-Zeile gehen soll – Arif

Antwort

1

autocomplete ActsAsTaggableOn::Tag, :name sollte den Trick tun :). Alternativ versuchen Sie autocomplete 'ActsAsTaggableOn::Tag', :name.

Das Problem ist, dass Sie Symbol statt Konstante verwenden - Klassennamen Konstanten sind ...

+0

Hmm mit 'Autocomplete ActsAsTaggableOn :: Tag,: name' scheint das Problem im Controller behoben zu haben . Aber jetzt fängt es ein 'TypeError:: autocomplete_ActsAsTaggableOn ist kein Klassen-/Modul-Fehler in ** Routen **. Ich habe den Beitrag mit einem Auszug aus 'routes.rb' aktualisiert. – Arif

+0

Versuchen Sie mit string:' get 'autocomplete_acts_as_taagable_on_tag_name',: ein =>: collection' oder 'get 'autocomplete_acts_as_taagable_on :: tag_name',: on =>: collection'. –

+0

Keine funktioniert ... Die zweite gibt einen 'ArgumentError: Missing: action key auf Routen Definition, bitte überprüfen Sie Ihre Routen.' Fehler – Arif

Verwandte Themen