2015-08-31 22 views
7

Ho riscontrato un problema con Active Admin. Qui ci sono le versioni:Amministratore attivo: impossibile accedere a mostrare/modificare pagine

  • ruby ​​'2.2.1'

  • rotaie '4.2.0'

  • activeadmin: 1.0.0.pre1

  • arbre: 1.0. 3 (menzionando questo perché sembra essere collegato al mio problema in qualche modo)

Siamo passati alle rails 4.2 e abbiamo dovuto aggiornare anche activeadmin (da 0,5). Dopo un paio di modifiche (in particolare il sistema di autorizzazione) tutto sembra andare bene, tranne che per un grosso problema: posso accedere solo alle pagine indice. Quando si accede a una pagina con un ID (ad esempio: "http://localhost:3000/admin/companies/2968"), viene visualizzato questo errore:

Nessuna corrispondenza corrisponde a {: action => "edit",: controller => "admin/companies",: format => nil,: id => # {ID utente: nil, [tutti gli attributi utente con valore nil]}}. Chiavi richieste mancanti: [: id]

Sembra che il parametro [: id] sia stato modificato in un utente vuoto in qualche modo, il che ovviamente lo interrompe.

Ecco quello che so:

  • quando mettendo un binding.pry in cima alla mia ApplicationController e di ispezione delle params, ottengo {: action => "modifica",: Controller => "admin/imprese",: format => nil,: id => 2968} (quindi nessun problema qui)

  • le linee che sollevano l'errore sono:

active_admin/risorsa/show.html.arb

-> arbre/elemento/builder_method.rb # insert_tag

-> arbre/elemento/builder_method.rb # build_tag ​​

-> actionpack/actiondispatch/viaggio/formattatore # generano (quando questo metodo viene chiamato , il valore ID path_parameters è già corrotto, il che solleva l'errore)

Qualche idea sul perché il mio parametro ID non è interpretato correttamente/dove potrei guardare oltre?

EDIT >> Ho questo nel mio routes.rb

ActiveAdmin.routes(self) 
devise_for :admin_users, ActiveAdmin::Devise.config 

E le rotte generate guardare bene con percorsi rake (in questo particolare esempio, ho admin/aziende # modificare admin_company GET/admin/aziende /:id(.:format)

EDIT2 >> Nel caso in cui non era chiaro, questo accade per tutte le pagine di spettacolo. Se vado a http://localhost:3000/admin/projects/ per esempio, funziona benissimo, ma mi dà http://localhost:3000/admin/projects/23815 id = vuoto utente pure

+0

Per favore aggiungi il file 'app/admin/company.rb' alla tua domanda. – scarver2

+0

Inoltre, rinomina i tuoi 'config/initializers/active_admin.rb' in' config/initializers/active_admin.rb.off' e riesegui l'installer di ActiveAdmin 'bundle exec gails_ active_admin: install' per vedere se questo risolve il problema. Assicurati che 'ActiveAdmin.routes (self)' sia nel tuo file 'routes.rb'. Inoltre, dalla console di Rails, assicurati che l'associazione utente dell'azienda <-> funzioni come suggerito dal messaggio di errore. – scarver2

+0

Thx per la risposta. L'esecuzione dell'installazione di AA non è stata risolta. Ho aggiunto i dettagli per i percorsi nel post. L'associazione azienda/utente funziona correttamente e admin/company.rb funzionava prima dell'aggiornamento, questo particolare problema si verifica in realtà anche prima di andare a questo file e per tutti i modelli! Ogni admin/model/id route è rotto – BPruvost

risposta

0

Non riconosco questo problema, ma 0.5 è una versione molto vecchia. Nella mia esperienza abbiamo dovuto upgrade in steps, ad es. Rails 3.2/AA 0.6 per limitare la causa di vari problemi.Guardando indietro attraverso il old CHANGELOG ho trovato this fix in 0.6.1 che potrebbe essere correlato al tuo problema.