ruby on rails - not - Ruby/Rails: ¿Cómo personalizas las plantillas de mailing de Devise?
devise rails español (4)
He instalado Devise para mi aplicación Rails (3.0.1) y funciona principalmente. Simplemente no puedo personalizar las vistas de correo .
- Mi modelo de usuario es "Usuario".
- Los controladores de diseño (que necesitaba anular para poder decirles a los controladores qué archivo de diseño usar) están en la
app/controllers/users/
, como lo hacen lasapp/controllers/users/sessions_controller.rb
- Las vistas de diseño (que he editado) están en
app/views/users/
like soapp/views/users/registrations/new.html.haml
- Aquí está la parte de diseño de mi 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 lo de arriba funciona, al menos. Sin embargo, al enviar correo, 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 ayude, aquí está el error de Cucumber:
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 / users / 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 que he anulado:
| | |~users/
| | | |-confirmations_controller.rb
| | | |-passwords_controller.rb
| | | |-registrations_controller.rb
| | | |-sessions_controller.rb
| | | `-unlocks_controller.rb
¿Cómo soluciono este problema?
¡Gracias!
Creo que deberás gestionar los puntos de vista de Devise por ti mismo. Pruebe lo siguiente en una consola:
rails generate devise:views
Esto generará todas las vistas que usa Devise (incluidas las plantillas de correo), que ahora puede personalizar.
Los anuncios publicitarios que está buscando deberían estar en ''app / views / idee / mailer''
Prueba esto:
rails generate devise:views
Para generar vistas por nombre de recurso
rails generate devise:views users
Para generar vistas específicas por módulo de recoverable
rails generate devise:views users -v passwords
Para generar especificar solo vistas de correo
rails generate devise:views users -v mailer
para más detalles generar vistas
según los documentos del inventor
deberías editar tus config / initializers / devise.rb:
config.scoped_views = true
(se comenta por defecto)
Al hacerlo, puede personalizar sus vistas para diferentes modelos, en lugar del diseño global.