2010-11-25 10 views
41

He instalado Devise para mi aplicación Rails (3.0.1) y funciona principalmente. Acabo de parece que no puede personalizar las vistas de correo.Ruby/Rails: ¿Cómo personalizas las plantillas de mailing de Devise?

  • Mi modelo de usuario es "Usuario".
  • Los controladores Idear (que necesitaba para anular así que podría decir lo que los controladores de archivo de diseño a utilizar) están en app/controllers/users/, al igual que app/controllers/users/sessions_controller.rb
  • La idear vistas (que he editado) están en app/views/users/ al igual que app/views/users/registrations/new.html.haml
  • Aquí es la parte de mi legado archivo de rutas:
 
    devise_for :users, :controllers => { 
     :sessions => "users/sessions", 
     :registrations => "users/registrations", 
     :passwords => "users/passwords", 
     :confirmations => "users/confirmations", 
     :unlocks => "users/unlocks" 
    } do 
     get "/login" => "devise/sessions#new" 
     get "/logout" => "devise/sessions#destroy" 
    end 

Todo por encima de las obras, por lo menos. Sin embargo, al enviar correos electrónicos, , las plantillas que Devise parece usar no son las que he editado en app/views/users/mailer/. El dispositivo todavía parece recuperar el predeterminado (como si nunca hubiera editado los archivos). Supongo que Devise todavía usa los archivos en la gema.

En caso de que ayuda, aquí está el error Pepino:

Feature: Manage accounts 
    In order to manage accounts 
    users 
    should be able to signup 

    # By default, www.example.com is the host when testing. 
    # This is a problem because when our site searches for the domain example.com, it cant find any. 
    # Therefore we must either set our testing domain to one of our choosing (and mention that in the routes), or create a domain example.com 
    # I prefer the first option. 
    Scenario: Signing up and resetting the password                  # features/manage_accounts.feature:10 
    Given I am on the login page                      # features/step_definitions/web_steps.rb:19 
    When I follow "Sign up"                       # features/step_definitions/web_steps.rb:33 
    And I fill in "Login" with "bobrobcom"                    # features/step_definitions/web_steps.rb:39 
    And I fill in "Email" with "[email protected]"                   # features/step_definitions/web_steps.rb:39 
    And I fill in "Password" with "123456"                    # features/step_definitions/web_steps.rb:39 
    And I fill in "Password confirmation" with "123456"                # features/step_definitions/web_steps.rb:39 
    And I press "Sign up"                        # features/step_definitions/web_steps.rb:27 
    Then I should see "Your account has been created. A confirmation was sent to your e-mail."    # features/step_definitions/web_steps.rb:107 
    And I should receive an email                      # features/step_definitions/email_steps.rb:51 
    When I open the email                        # features/step_definitions/email_steps.rb:72 
    Then I should see "Welcome bobrobcom!" in the email body               # features/step_definitions/email_steps.rb:96 
     expected "<p>Welcome [email protected]!</p>\n\n<p>You can confirm your account through the link below:</p>\n\n<p><a href=\"http://stils.dev/users/confirmation?confirmation_token=d9ZXliqfTArb2cNmwPzL\">Confirm my account</a></p>\n" to include "Welcome bobrobcom!" (RSpec::Expectations::ExpectationNotMetError) 
     ./features/step_definitions/email_steps.rb:97:in `/^(?:I|they) should see "([^"]*?)" in the email body$/' 
     features/manage_accounts.feature:21:in `Then I should see "Welcome bobrobcom!" in the email body' 
    When I follow "Confirm my account"                     # features/step_definitions/web_steps.rb:33 
    Then I should see "Your account was successfully confirmed. You are now signed in."        # features/step_definitions/web_steps.rb:107 
    When I log out                          # features/step_definitions/user_steps.rb:9 
    And I go to the reset password page                    # features/step_definitions/web_steps.rb:23 
    And I fill in "Email" with "[email protected]"                   # features/step_definitions/web_steps.rb:39 
    And I press "Send me reset password instructions"                 # features/step_definitions/web_steps.rb:27 
    Then I should see "You will receive an email with instructions about how to reset your password in a few minutes." # features/step_definitions/web_steps.rb:107 
    And I should receive an email                      # features/step_definitions/email_steps.rb:51 
    When I open the email                        # features/step_definitions/email_steps.rb:72 
    Then I should see "Hello bobrobcom!" in the email body                # features/step_definitions/email_steps.rb:96 
    When I follow "Change my password" in the email                 # features/step_definitions/email_steps.rb:166 
    Then I should see "Set your new password"                   # features/step_definitions/web_steps.rb:107 

Failing Scenarios: 
cucumber features/manage_accounts.feature:10 # Scenario: Signing up and resetting the password 

Y app/views/usuarios/confirmation_instructions.erb:

<p>Welcome <%= @resource.login %>!</p> 

<p>You can confirm your account through the link below:</p> 

<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p> 

Además, si ayuda, aquí están los controladores I ha anulado:

| | |~users/ 
| | | |-confirmations_controller.rb 
| | | |-passwords_controller.rb 
| | | |-registrations_controller.rb 
| | | |-sessions_controller.rb 
| | | `-unlocks_controller.rb 

¿Cómo puedo solucionar este problema?

Gracias!

Respuesta

57

Creo que tendrá que administrar usted mismo las vistas de Devise. Pruebe lo siguiente en una consola:

rails generate devise:views 

Esto generará todos los puntos de vista Diseñar usos (incluyendo plantillas Mailer), que ahora se puede personalizar.

Los anuncios publicitarios que estás buscando, entonces debe estar en 'app/views/diseñar/anuncio publicitario'

+0

Estoy confundido, ya que todas mis cosas están bajo el espacio de nombres de usuario, ¿las vistas deben estar bajo 'app/views/users /'? Eso es lo que tengo ahora, y cuando edito las vistas para las otras cosas (app/views/users/registrations, por ejemplo) refleja el cambio en mi aplicación. * No * la aplicación/vistas/usuarios/vistas de correo sin embargo. –

+1

Parece que tiene las plantillas de correo en el lugar correcto. Mire este hilo http://groups.google.com/group/plataformatec-devise/browse_thread/thread/98cdb37ac52bdf51, ¿puede indicarle la dirección correcta? –

+2

hola, estoy teniendo el mismo problema que el póster, y esta respuesta no es realmente una respuesta. Tengo una solución pirateada, que es enlazar mis vistas/usuarios a vistas/ideas; con eso, idear utiliza las plantillas de correo personalizado. Pero esa solución no está limpia, y no quiero tener un directorio de usuarios y un dispositivo. ¿Alguien más puede aclarar? –

0

Prueba esto:

rails generate devise:views 
20

acuerdo con devise's docs

debería editar su configuración /initializers/devise.rb:

config.scoped_views = true 

(se comenta de manera predeterminada)

Al hacerlo, puede personalizar sus vistas para diferentes modelos, en lugar del diseño global.

+2

Después de configurar esta opción de configuración, ejecute' carriles g dispositivo: vistas [ALCANCE] 'donde ALCANCE es nombre de recurso singularizado (por ejemplo, usuario, cliente, administrador, etc.). – Zubin

+1

@Zubin Tenga en cuenta que [en la documentación de Devise] (https://github.com/plataformatec/devise#configure-views) un ** alcance pluralizado ** se pasa al generador. – JJD

22

Para generar vistas con un nombre recursos

rails generate devise:views users 

para generar especificar vistas por módulo derecoverable

rails generate devise:views users -v passwords 

Para generar especificar electrónico vistas sólo

rails generate devise:views users -v mailer 

para más detalles generate views

Cuestiones relacionadas