2012-02-24 13 views
9

Chcę użyć moich wygenerowanych widoków generowanych (z komendą rails g devise:views users) z app/views/users.Nie można przesłonić domyślnego widoku widoków gemów

już mam ustawić te opcje z app/initializers/devise.rb:

config.scoped_views = true 
config.default_scope = :user 

ale nadal wykorzystuje domyślne opracować widoki z /usr/lib/ruby/gems/1.8/gems/devise-2.0.4/app/views/devise/

więc co mam zrobić? Dzięki.

+0

Czy Twoje poglądy znajdują się w 'app/views/users' lub' app/views/users/sessions'? –

+0

Tom L, [tak] (http://stackoverflow.com/questions/9432946/cant-override-default-devise-gem-views#comment11927719_9432946) – user973254

+0

Przepraszamy, odpowiedziałeś, gdy zmieniłem pytanie, ponieważ było dupą Nash's. –

Odpowiedz

2

Aby uzyskać niestandardowy widok logowania, podczas korzystania z domyślnego narzędzia do projektowania , myślę, że wystarczy utworzyć app/views/devise/sessions/new.html.erb. I, na razie, zapomnijmy o interfejsie CRUD. I cofnij te ustawienia config/initializers/devise.rb. Zobacz, czy możesz to zrobić.

+0

Ta kombinacja działa, ale nie mogę zrozumieć, dlaczego mój nie działa. Naprawdę potrzebuję teleskopów roboczych. – user973254

+0

To działa. Chłodny. Jeśli potrzebujesz CRUD, potrzebujesz tylko zwykłego kontrolera i widoków. Nie wydaje mi się, że musisz zawracać sobie głowę celami, chyba że masz więcej niż jednego rodzaju użytkowników. –

+0

Ale nadal jest interesujący, jak mogę uzyskać zasięg działania. – user973254

9

Miałem ten sam problem i zajęło mi to na zawsze zrozumienie tego. Ustawienie config.scoped_views = true jest pierwszym krokiem, ale jest jeszcze jeden krok, który nie jest tak jasny.

Jeśli przyjrzysz się uważnie niektórym widokom generowanym przez rails g devise:views users, zobaczysz, że szablony zawierają <%= render "devise/shared/links" %> u dołu pliku. Ponieważ wygenerowałeś te widoki, udostępnione linki znajdują się teraz w users/shared/links. Ponieważ program nie znajduje już nic w wersji devise/shared/links, zamiast tego używa domyślnego widoku łączy.

Zmień <%= render "devise/shared/links" %> na <%= render "users/shared/links" %> i gotowe!

+0

To była odpowiedź dla mnie) Wcześniej nie było ustawień zasięgu i domyślnie nadpisało domyślne widoki. –

Powiązane problemy