J'ai installé Devise pour mon Rails (3.0.1) et cela fonctionne principalement. Je n'arrive pas à personnaliser les vues de l'expéditeur .
app/controllers/users/
, ainsi app/controllers/users/sessions_controller.rb
app/views/users/
ainsi app/views/users/registrations/new.html.haml
devise_for: utilisateurs,: contrôleurs => { : sessions => "utilisateurs/sessions", : enregistrements => "utilisateurs/enregistrements", : mots de passe => "utilisateurs/mots de passe", : confirmations => "utilisateurs/confirmations", : unlocks => "utilisateurs/déverrouillages" } do get "/ login" => "devise/sessions # new" get "/ logout" => "devise/sessions # destroy" end
Tout au-dessus fonctionne, au moins. Cependant, lors de l'envoi de courrier, les modèles que Devise semble utiliser ne sont pas ceux que j'ai modifiés sur app/views/users/mailer/
. Devise semble toujours récupérer celui par défaut (comme si je n'avais jamais modifié les fichiers). Je suppose que Devise utilise toujours les fichiers dans le joyau.
Au cas où cela aiderait, voici l'erreur du concombre:
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
Et app/vues/utilisateurs/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>
De plus, si cela aide, voici les contrôleurs que j'ai remplacés:
| | |~users/
| | | |-confirmations_controller.rb
| | | |-passwords_controller.rb
| | | |-registrations_controller.rb
| | | |-sessions_controller.rb
| | | `-unlocks_controller.rb
Comment résoudre ce problème?
Merci!
Je pense que vous devrez gérer vous-même les vues Devise. Essayez ce qui suit dans une console:
Rails generate devise:views
Cela générera toutes les vues utilisées par Devise (y compris les modèles de mailers), que vous pouvez désormais personnaliser.
Les expéditeurs que vous recherchez doivent alors être dans 'app/views/devise/mailer'
Si vous souhaitez générer des vues étendues, ou seulement un sous-ensemble d'entre elles, c'est également possible. Selon la documentation sur https://github.com/plataformatec/devise#configuring-views :
Vous pouvez également utiliser le générateur pour générer des vues étendues:
Rails generate devise:views users
Si vous souhaitez générer seulement quelques ensembles de vues, comme ceux du module enregistrable et confirmable, vous pouvez passer une liste de modules au générateur avec l'indicateur -v.
Rails generate devise:views -v registrations confirmations
Pour générer des vues par nom de ressource
Rails generate devise:views users
Pour générer des vues spécifiques par module de recoverable
Rails generate devise:views users -v passwords
Pour générer spécifier uniquement les vues de courrier
Rails generate devise:views users -v mailer
pour plus de détails générer des vues
selon documents de devise
vous devez éditer votre config/initializers/devise.rb:
config.scoped_views = true
(il est commenté par défaut)
ce faisant, vous pouvez personnaliser vos vues pour différents modèles, plutôt que pour le modèle global.
Si vous n'êtes pas intéressé par l'utilisation par défaut de Devise d'ActionMailer et que vous souhaitez plutôt envoyer des e-mails personnalisés avec une API à partir d'un service tel que SendGrid , Mailgun , ou Postmark vous devrez créer un Mailer
personnalisé qui sous-classe Devise::Mailer
et remplace ses méthodes de "notification".
Voici un exemple utilisant Mailgun .