2012-02-24 11 views
9

Desidero utilizzare le viste generate da Devise (con comando rails g devise:views users) da app/views/users.Impossibile sovrascrivere le viste di default devise gem

Ho già impostare queste opzioni dal app/initializers/devise.rb:

config.scoped_views = true 
config.default_scope = :user 

ma utilizza ancora predefinita elaborare vista da /usr/lib/ruby/gems/1.8/gems/devise-2.0.4/app/views/devise/

Allora, cosa devo fare? Grazie.

+0

Le tue visualizzazioni in 'app/views/users' o' app/views/users/sessions'? –

+0

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

+0

Scusate, avete risposto mentre ho cambiato la mia domanda poiché era un doppio di Nash. –

risposta

2

Per una vista di accesso personalizzata, quando si utilizza la risorsa di default User, penso che tutto ciò che serve sia creare app/views/devise/sessions/new.html.erb. E, solo per il momento, dimentichiamoci dell'interfaccia CRUD. E annullare le impostazioni di config/initializers/devise.rb. Guarda se riesci a farlo funzionare.

+0

Questa combinazione funziona, ma non riesco a capire perché il mio non funzioni. Ho davvero bisogno di obiettivi di lavoro. – user973254

+0

Quindi funziona. Freddo. Se vuoi CRUD tutto ciò di cui hai bisogno è il solito controller e visualizzazioni. Non penso che sia necessario fare confusione con gli ambiti a meno che non si disponga di più di un tipo di utente di creazione. –

+0

Ma è ancora interessante come posso far funzionare gli ambiti. – user973254

9

Stavo avendo lo stesso problema e mi ci è voluto un tempo per capirlo. L'impostazione config.scoped_views = true è il primo passaggio, ma c'è un altro passaggio che non è altrettanto chiaro.

Se osservate da vicino alcune delle viste generate da rails g devise:views users vedrete che i modelli includono <%= render "devise/shared/links" %> nella parte inferiore del file. Poiché hai generato queste viste, i collegamenti condivisi ora si trovano in users/shared/links. Dal momento che devise non trova più nulla in devise/shared/links, utilizza invece la vista collegamenti predefinita.

Cambia <%= render "devise/shared/links" %> a <%= render "users/shared/links" %> e sei pronto!

+0

Questa era la risposta per me) Presto non c'erano impostazioni di scope e l'idea ha la precedenza sulle viste predefinite. –

Problemi correlati