Implémentation d'un formulaire de demande à l'aide de Gmail dans Rails.
Commencez par configurer le routage. Il est supposé que lorsque vous entrez le contenu de la demande sur la page du formulaire de demande et que vous l'envoyez, vous serez redirigé vers la page de fin de transmission.
config/routes.rb
Rails.application.routes.draw do
resource :contacts, only: [:new, :create] do
get "/thanks" => "contacts#thanks"
end
end
Le contenu à saisir dans le formulaire de demande est constitué de trois points: nom, adresse e-mail et contenu de la demande.
$ rails g model contact name:string email:string content:text
$ rails db:migrate
$ rails g controller contacts
app/controller/contacts_controller.rb
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(contact_params)
if @contact.save
ContactMailer.contact_mail(@contact).deliver
redirect_to thanks_contacts_path
else
render :new
end
end
def thanks
end
private
def contact_params
params.require(:contact).permit(:name, :email, :content)
end
end
Ne vous inquiétez pas pour certaines parties de l'hiragana qui correspondent au goût du site que j'ai créé.
app/view/contacts/new.html.erb
<h3>Nous contacter</h3>
<%= form_with(model: @contact, local: true) do |f| %>
<%= f.label :name, "Nom" %>
<%= f.text_field :name %>
<%= f.label :email, "adresse mail" %>
<%= f.email_field :email, autocomplete: "email" %>
<%= f.label :content, "Pas comme" %>
<%= f.text_field :content %>
<%= f.submit "Viens" %>
<% end %>
app/view/contacts/thanks.html.erb
<h3>Merci pour votre demande.</h3>
$ rails g mailer ContactMailer
app/model/contact_mailer.rb
class ContactMailer < ApplicationMailer
def contact_mail(contact)
@contact = contact
mail to:"Mon adresse email", subject: "Nous contacter"
end
end
app/view/contact_mailer/contact_mail.html.erb
<p>Nom d'utilisateur:<%= @contact.name %></p>
<p>adresse mail:<%= @contact.email %></p>
<p>Contenu de l'enquête:<%= @contact.content %></p>
config/environments/development.rb
Rails.application.configure do
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
domain: 'gmail.com',
port: 587,
user_name: 'Mon adresse email',
password: ENV["GMAIL_KEY"],
authentication: 'plain',
enable_starttls_auto: true
}
end
Je vais mettre le mot de passe dans le fichier .env pour qu'il ne monte pas sur GitHub.
Décrivez ce qui suit dans le fichier .env (créé s'il n'existe pas) directement sous le répertoire de l'application.
GMAIL_KEY=mot de passe
Pour le mot de passe saisi ici, accédez au Compte Google et saisissez le mot de passe d'application généré.
Sécurité → champ de connexion Google Si vous n'avez pas configuré l'authentification en 2 étapes, commencez par la configurer, puis générez un mot de passe d'application. Entrez le mot de passe généré ici.
La mise en œuvre est terminée ici.
Maintenant, lorsque vous envoyez un e-mail à partir du formulaire de demande
J'ai pu envoyer et recevoir en toute sécurité.