2015-03-19 23 views
5

Sto configurando un'applicazione rails con rails_admin e act_as_taggable_on gems.Come posso ottenere che rails_admin gem riconosca i modelli con act_as_taggable_on tag_lists?

In precedenza nel progetto quando si cerca di fare in modo che questo potrebbe essere fatto ho trovato this issue sulla pagina GitHub rails_admin che ha portato alla this gem che è ancora nella lista dei plugin sul wiki rails_admin github. Quindi sembra che possa essere fatto.

Ho iniziato seguendo le istruzioni di installazione nei README per rails_admin, acts_as_taggable_on e rails_admin_tag_list. Ho alcuni modelli sull'app e prima di aggiungere qualsiasi funzionalità di tagging a loro appaiono e funzionano bene su rails_admin.

Ecco un esempio di un modello che sto tentando di aggiungere tag a:

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 questo formato ricevo un avviso lampo: "non è stato trovato Model 'Località'" quando si accede al pagina di amministrazione dei binari. Anche il modello di posizione non viene visualizzato nell'elenco dei modelli.

Non ho ancora costruito le pagine per aggiungere dati ma ho fatto aggiungere una posizione a mio database tramite la console rotaie e ha aggiunto i tag alle liste per quella posizione utilizzando l'esempio del README acts_as_taggable_on:

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

Dopo aver fatto questo e guardando ancora la pagina rails_admin vedo ancora che la "Posizione modello" non è stata trovata "avviso flash. Ma vedo anche la posizione nell'elenco dei modelli.

Cliccando sulla posizione mi dà il seguente errore:

NoMethodError at /location 

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

errori Better mostra la linea

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

sottostante per essere il linea di colpa:

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 

Sono è ancora abbastanza nuovo, ma sembra che non ci sia molto scritto sull'interazione tra queste due gemme al momento. Sono grato per qualsiasi suggerimento che puoi fornire per ottenere l'amministrazione dei binari per poter visualizzare i modelli con tag_list in modo appropriato. Grazie!

risposta

4

Okay, lascia che ti precisi dicendo che non ho idea di cosa sto facendo. Ma I potrebbe avere un indizio.

rails_admin_tag_list non è stato aggiornato per Rails 4, che sembra si stia utilizzando (ciao, parametri forti!). E sto cercando di indovinare che si sta utilizzando una versione abbastanza recente di rails_admin, dal momento che sei on Rails 4.

Sulla base del lavoro di debug che hai già fatto, sembra che il problema è con il RailsAdmin::Adapters::ActiveRecord::Property (o è almeno adiacente al tuo problema), che sembra essere stato aggiunto nelle nuove versioni di rails_admin. (O almeno è quello che sembra senza una ricerca approfondita.)

C'è una richiesta di pull senza uscita su rails_admin_tag_list che sembra che indirizzi tale problema here.

Allora, che cosa io suggerirei di provare è specificando che fork/commit di rails_admin_tag_list nel vostro Gemfile, come ad esempio:

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

Buona fortuna!

+0

Questa era essenzialmente la risposta corretta. Apparentemente c'erano altri problemi nel modo in cui ho impostato l'utilizzo della gemma, ma questo era un elemento chiave necessario e mi ha fatto superare il problema menzionato in questa domanda. – Roseaboveit