2012-08-15 14 views
6

Mam zainstalowane devise.
i mam link: <%= link_to "Sign up", new_user_registration_path %>Szyny: Zainstalowałem ActiveAdmin i mój link do devise przestał działać

Kiedy zainstalowany ActiveAdmin (dla istniejącego modelu User), ten link przestał działać:

undefined local variable or method `new_user_registration_path' 

użyłem git diff dla routes.rb i to jest tutaj (dodane linie są czarny)

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

także <%= link_to "Sign out", destroy_user_session_path, :method => :delete %> prowadzi teraz do /admin/logout

Jak mogę rozwiązać ten problem?

trasy Zgrabiarka:

 admin_dashboard   /admin(.:format)      {:action=>"index", :controller=>"admin/dashboard"} 
     admin_codes GET  /admin/codes(.:format)     {:action=>"index", :controller=>"admin/codes"} 
        POST  /admin/codes(.:format)     {:action=>"create", :controller=>"admin/codes"} 
     new_admin_code GET  /admin/codes/new(.:format)    {:action=>"new", :controller=>"admin/codes"} 
    edit_admin_code GET  /admin/codes/:id/edit(.:format)  {:action=>"edit", :controller=>"admin/codes"} 
      admin_code GET  /admin/codes/:id(.:format)    {:action=>"show", :controller=>"admin/codes"} 
        PUT  /admin/codes/:id(.:format)    {:action=>"update", :controller=>"admin/codes"} 
        DELETE  /admin/codes/:id(.:format)    {:action=>"destroy", :controller=>"admin/codes"} 
     admin_users GET  /admin/users(.:format)     {:action=>"index", :controller=>"admin/users"} 
        POST  /admin/users(.:format)     {:action=>"create", :controller=>"admin/users"} 
     new_admin_user GET  /admin/users/new(.:format)    {:action=>"new", :controller=>"admin/users"} 
    edit_admin_user GET  /admin/users/:id/edit(.:format)  {:action=>"edit", :controller=>"admin/users"} 
      admin_user GET  /admin/users/:id(.:format)    {:action=>"show", :controller=>"admin/users"} 
        PUT  /admin/users/:id(.:format)    {:action=>"update", :controller=>"admin/users"} 
        DELETE  /admin/users/:id(.:format)    {:action=>"destroy", :controller=>"admin/users"} 
     admin_comments GET  /admin/comments(.:format)    {:action=>"index", :controller=>"admin/comments"} 
        POST  /admin/comments(.:format)    {:action=>"create", :controller=>"admin/comments"} 
    new_admin_comment GET  /admin/comments/new(.:format)   {:action=>"new", :controller=>"admin/comments"} 
    edit_admin_comment GET  /admin/comments/:id/edit(.:format)  {:action=>"edit", :controller=>"admin/comments"} 
     admin_comment GET  /admin/comments/:id(.:format)   {:action=>"show", :controller=>"admin/comments"} 
        PUT  /admin/comments/:id(.:format)   {:action=>"update", :controller=>"admin/comments"} 
        DELETE  /admin/comments/:id(.:format)   {:action=>"destroy", :controller=>"admin/comments"} 
    new_user_session GET  /admin/login(.:format)     {:action=>"new", :controller=>"active_admin/devise/sessions"} 
     user_session POST  /admin/login(.:format)     {:action=>"create", :controller=>"active_admin/devise/sessions"} 
destroy_user_session DELETE|GET /admin/logout(.:format)    {:action=>"destroy", :controller=>"active_admin/devise/sessions"} 
     user_password POST  /admin/password(.:format)    {:action=>"create", :controller=>"active_admin/devise/passwords"} 
    new_user_password GET  /admin/password/new(.:format)   {:action=>"new", :controller=>"active_admin/devise/passwords"} 
    edit_user_password GET  /admin/password/edit(.:format)   {:action=>"edit", :controller=>"active_admin/devise/passwords"} 
        PUT  /admin/password(.:format)    {:action=>"update", :controller=>"active_admin/devise/passwords"} 
       root   /         {:controller=>"codes", :action=>"list"} 
           /:controller(/:action(/:id(.:format))) 

I wyrejestrowany starą wersję, a drogi były:

 new_user_session GET /users/sign_in(.:format)    {:action=>"new", :controller=>"devise/sessions"} 
      user_session POST /users/sign_in(.:format)    {:action=>"create", :controller=>"devise/sessions"} 
    destroy_user_session DELETE /users/sign_out(.:format)    {:action=>"destroy", :controller=>"devise/sessions"} 
      user_password POST /users/password(.:format)    {:action=>"create", :controller=>"devise/passwords"} 
     new_user_password GET /users/password/new(.:format)   {:action=>"new", :controller=>"devise/passwords"} 
     edit_user_password GET /users/password/edit(.:format)   {:action=>"edit", :controller=>"devise/passwords"} 
         PUT /users/password(.:format)    {:action=>"update", :controller=>"devise/passwords"} 
cancel_user_registration GET /users/cancel(.:format)    {:action=>"cancel", :controller=>"devise/registrations"} 
     user_registration POST /users(.:format)      {:action=>"create", :controller=>"devise/registrations"} 
    new_user_registration GET /users/sign_up(.:format)    {:action=>"new", :controller=>"devise/registrations"} 
    edit_user_registration GET /users/edit(.:format)     {:action=>"edit", :controller=>"devise/registrations"} 
         PUT /users(.:format)      {:action=>"update", :controller=>"devise/registrations"} 
         DELETE /users(.:format)      {:action=>"destroy", :controller=>"devise/registrations"} 
+1

uruchom "trasy rake'u" i wypisz wyniki pls. – n0denine

Odpowiedz

1

Wydaje się, że używasz tego samego modelu zarówno dla zwykłych użytkowników i administratorami. ActiveAdmin wymaga osobnego modelu dla administratorów. Spróbuj cofnięcia zmian dokonanych przez generator, a następnie uruchomić ten:

rails generate active_admin:resource AdminUser 
rake db:migrate 

To stworzy AdminUser model, który będzie miał absolutnie żadnego związku z użytkownikami witryny.

+0

Problem polega na tym, że AA nie wymaga osobnego modelu (mogę wybrać dowolny model na instalacji AA). I chcę użyć tego samego modelu. – DmitryR

+0

Biorąc pod uwagę powyższy komentarz, dlaczego oznaczyłeś odpowiedź jako prawidłową? Jak stwierdziłaś, Active Admin wyraźnie stwierdza w swojej dokumentacji, że oddzielne modele nie są wymagane. – sixty4bit

1

w routes.rb określ devise_for: użytkownicy To przywróci opracować użytkowników dróg

11

Jedno może być brakuje zadeklarować swój model użytkownika jako „rejestrującym”, aby uzyskać trasy zarejestruj konto wygenerowane przez opracować.

Powinieneś mieć coś takiego:

class User < ActiveRecord::Base 
    # Include devise modules 
    devise :database_authenticatable, :registerable, ... 

wpadłem na ten problem raz i to, co go rozwiązać.

+2

Myślę, że instalator activeadmin aktualizuje określony model, w twoim przypadku był to Użytkownik i musiał usunąć: rejestrowalny. Dodanie tego z powrotem zgodnie z sugestią rozwiązało ten problem. – Kevin

Powiązane problemy