2015-03-19 12 views
5

Ich richte eine Rails-Anwendung mit rails_admin und acts_as_taggable_on Edelsteinen ein.Wie erhalte ich das Juwel rails_admin, um Modelle mit acts_as_tagable_on tag_lists zu erkennen?

Zu Beginn des Projekts, wenn Sie sicher zu machen versucht, dass dies ich this issue gefunden auf der rails_admin Github Seite getan werden könnte, die zu this gem geführt, die noch in der Liste der Plug-ins auf dem rails_admin GitHub Wiki ist. Es scheint also möglich zu sein.

Ich begann mit den Setup-Anweisungen in den READMEs für rails_admin, acts_as_ta gable_on und rails_admin_tag_list. Ich habe einige Modelle in der App und vor dem Hinzufügen von Tagging-Funktionen zu ihnen erscheinen sie und funktionieren gut auf rails_admin. Hier

ist ein Beispiel für ein Modell, das ich versucht bin hinzufügen Tags:

class Location < ActiveRecord::Base 
    acts_as_taggable 
    acts_as_taggable_on :regions 

    private 

    def location_params 
    params.require(:location).permit(:lat, :long, :tag_list => [], :region_list => []) 
    end 
end 

In diesem Format ich eine Flash-Mitteilung erhalten: „Model‚Location‘konnte nicht gefunden werden“, wenn der Zugriff auf Schienen-Admin-Seite. Das Standortmodell wird auch nicht in der Liste der Modelle angezeigt.

Ich habe noch nicht Seiten Daten hinzufügen gebaut, aber ich habe eine Stelle zu meiner Datenbank über die Schienen Konsole hinzufügen und Tags für diesen Standort zu den Listen hinzugefügt, um das Beispiel aus der acts_as_taggable_on README mit:

a = Location.new 
a.region_list.add("awesome") 

Nachdem ich dies getan habe und die rails_admin Seite erneut gesehen habe, sehe ich immer noch die "Model 'Location' konnte nicht gefunden werden". Aber ich sehe auch die Position in der Liste der Modelle.

auf Location Ein Klick gibt mir die folgende Fehlermeldung:

NoMethodError at /location 

undefined method `[]' for #<RailsAdmin::Adapters::ActiveRecord::Property:0x00000101fabd90> 

Bessere Fehler zeigt die

if tag_types.include?(properties[:name]) 

Zeile unter der Leitung schuld zu sein:

RailsAdmin::Config::Fields.register_factory do |parent, properties, fields| 

    model = parent.abstract_model.model 

    if defined?(::ActsAsTaggableOn) && model.taggable? 
    tag_types = model.tag_types 

    if tag_types.include?(properties[:name]) 
     name = "#{properties[:name].to_s.singularize}_list".to_sym 
     fields << RailsAdmin::Config::Fields::Types::TagList.new(parent, name, properties) 

    end 
    end 

Ich bin immer noch ziemlich neu, aber es scheint, als ob nicht viel über die Wechselwirkung zwischen diesen beiden Edelsteinen geschrieben wurde im Augenblick. Ich bin dankbar für jede Einsicht, die Sie bereitstellen können, damit rails admin in der Lage ist, Modelle mit tag_lists angemessen anzuzeigen. Vielen Dank!

Antwort

4

Okay, lassen Sie mich das vorweg sagen, dass ich keine Ahnung habe, was ich mache. Aber ich habe könnte einen Hinweis haben.

rails_admin_tag_list wurde nicht für Rails 4 aktualisiert, die es sieht, wie Sie verwenden (Hallo, starke Parameter!). Und ich schätze, Sie verwenden eine ziemlich aktuelle Version von rails_admin, da Sie auf Schienen 4 sind.

Basierend auf der Debugging-Arbeit, die Sie bereits getan haben, sieht es aus wie das Problem mit der RailsAdmin::Adapters::ActiveRecord::Property (oder Es ist mindestens neben Ihrem Problem), das aussieht, als ob es in neueren Versionen von rails_admin hinzugefügt wurde. (Oder zumindest so sieht es ohne gründliche Recherche aus.)

Es gibt eine nicht zusammengesetzte Pull-Anfrage auf rails_admin_tag_list, die aussieht, als ob sie dieses Problem here anspricht.

Also, was ich vorschlagen würde versuchen, ist, dass die Gabel Angabe/commit von rails_admin_tag_list in Ihrem Gemfile, wie solche:

gem 'rails_admin_tag_list', :git => 'git://github.com/imouaddine/rails_admin_tag_list.git', :ref => 'a9a4e31af6fdd2124110d0dff81ab97950803e65'

Viel Glück! Diese

+0

war im Wesentlichen die richtige Antwort. Es gab offenbar andere Probleme, wie Ich habe das Juwel verwenden, aber dies war ein Schlüsselstück, das notwendig ist, und hat mich Vergangenheit das Problem in dieser Frage erwähnt. – Roseaboveit