[RUBY] Implémenter un formulaire de contact dans Rails

Implémentation d'un formulaire de demande à l'aide de Gmail dans Rails.

Paramètres de routage

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

Créer un modèle

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

Créer un contrôleur

$ 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

Créer une vue (formulaire de contact)

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 %>

Création d'une vue (écran de fin d'envoi)

app/view/contacts/thanks.html.erb


<h3>Merci pour votre demande.</h3>

Créer un mailer

$ rails g mailer ContactMailer

Décrivez le processus d'envoi de courrier

app/model/contact_mailer.rb


class ContactMailer < ApplicationMailer
  def contact_mail(contact)
    @contact = contact
    mail to:"Mon adresse email", subject: "Nous contacter"
  end
end

Créer un email

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>

Paramètres du serveur Gmail

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.

Paramètres de la clé Gmail

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 スクリーンショット 2020-10-25 23.32.31.png

J'ai pu envoyer et recevoir en toute sécurité.

Recommended Posts

Implémenter un formulaire de contact dans Rails
Markdown implémenté dans Rails
Comment implémenter une fonctionnalité similaire dans Rails
Implémenter la fonction d'application dans Rails
Comment implémenter une fonctionnalité intéressante dans Ajax avec Rails
Ajoutez une fonction de recherche dans Rails.
3 Implémentez un interpréteur simple en Java
Implémenter une fonction de connexion simple dans Rails
Créer une nouvelle application avec Rails
Implémenter le client gRPC dans Ruby
Implémenter la fonction de téléchargement CSV dans Rails
[Rails] Un moyen simple d'implémenter une fonction d'auto-introduction dans votre profil
Comment insérer une vidéo dans Rails
Implémenter quelque chose comme une pile en Java
Comment implémenter la fonctionnalité de classement dans Rails
Implémenter des transitions de boutons à l'aide de link_to dans Rails
[Rails] Je souhaite envoyer des données de différents modèles dans un formulaire
Implémenter la pagination des rails
Group_by dans Rails
Convertir en balise dans la chaîne d'URL avec Rails
Mettre en œuvre des fonctions de gestion des utilisateurs dans un format d'assistant
Mettre en œuvre la fonction de classement par étoiles en utilisant Raty dans Rails 6
Enregistreur de rails Obtenez une idée approximative en 1 minute
Comment créer facilement un pull-down avec des rails
(Ruby on Rails6) Création de données dans une table
Implémenter des itérations dans View en rendant une collection [Rails]
Comment stocker simultanément des données dans un modèle associé à une forme imbriquée (Rails 6.0.0)
Comment implémenter la connexion invité en 5 minutes sur le portefeuille de rails
Implémenter la fonction de recherche de publication dans l'application Rails (méthode where)
Association de modèles dans Rails
Ajout de colonnes dans les rails
Introduire la conception avec Rails pour implémenter la fonctionnalité de gestion des utilisateurs
Implémentez une clause IN multi-colonnes (colonne: condition = n: n) dans DOMA.
Désactiver les turbolinks dans les rails
Je veux utiliser une petite icône dans Rails
Lancer du SQL brut pour lire le réplica avec Rails
[Ruby / Rails] Définissez une valeur unique (unique) dans la classe
[Comment insérer une vidéo dans un hameau avec Rails]
Mettre en œuvre le BAN du compte Rails
Implémentez rapidement singleton avec enum en Java
Comment écrire une recherche de comparaison de dates dans Rails
Je souhaite définir une fonction dans la console Rails
^, $ dans l'expression régulière Rails
Utiliser des images avec des rails
[Rails 6] Comment définir une image d'arrière-plan dans Rails [CSS]
Implémenter CustomView dans le code
Comprendre la migration dans les rails
[Rails] Comment charger JavaScript dans une vue spécifique
Diviser routes.rb dans Rails6
Comment implémenter une image de profil circulaire avec CarrierWave et R Magick in Rails
[Rails] Mettre en œuvre la tâche de râteau