[RUBY] Implementieren Sie ein Kontaktformular in Rails

Implementierung eines Anfrageformulars mit Google Mail in Rails.

Routing-Einstellungen

Richten Sie zunächst das Routing ein. Es wird davon ausgegangen, dass Sie, wenn Sie den Anfrageinhalt auf der Anfrageformularseite eingeben und senden, zur Seite zum Abschluss der Übertragung weitergeleitet werden.

config/routes.rb


Rails.application.routes.draw do
  resource :contacts, only: [:new, :create] do
    get "/thanks" => "contacts#thanks"
  end
end

Modell erstellen

Der Inhalt, der in das Anfrageformular eingegeben werden muss, besteht aus drei Punkten: Name, E-Mail-Adresse und Inhalt der Anfrage.

$ rails g model contact name:string email:string content:text
$ rails db:migrate

Controller erstellen

$ 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

Ansicht erstellen (Kontaktformular)

Es gibt einige Teile, die nach dem Geschmack der von mir erstellten Site zu Hiragana verarbeitet werden, aber bitte machen Sie sich keine Sorgen.

app/view/contacts/new.html.erb


<h3>Kontaktiere uns</h3>
<%= form_with(model: @contact, local: true) do |f| %>
  <%= f.label :name, "Name" %>
  <%= f.text_field :name %>
  <%= f.label :email, "Mail Adresse" %>
  <%= f.email_field :email, autocomplete: "email" %>
  <%= f.label :content, "Nicht wie" %>
  <%= f.text_field :content %>
  <%= f.submit "Kommen Sie" %>
<% end %>

Ansicht erstellen (Abschlussbildschirm senden)

app/view/contacts/thanks.html.erb


<h3>Vielen Dank für Ihre Anfrage.</h3>

Mailer erstellen

$ rails g mailer ContactMailer

Beschreiben des E-Mail-Sendevorgangs

app/model/contact_mailer.rb


class ContactMailer < ApplicationMailer
  def contact_mail(contact)
    @contact = contact
    mail to:"Meine Email-Adresse", subject: "Kontaktiere uns"
  end
end

E-Mail erstellen

app/view/contact_mailer/contact_mail.html.erb


<p>Nutzername:<%= @contact.name %></p>
<p>Mail Adresse:<%= @contact.email %></p>
<p>Inhalt der Anfrage:<%= @contact.content %></p>

Google Mail-Servereinstellungen

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: 'Meine Email-Adresse',
    password: ENV["GMAIL_KEY"],
    authentication: 'plain',
    enable_starttls_auto: true
  }
end

Ich werde das Passwort in die .env-Datei einfügen, damit es nicht auf GitHub angezeigt wird.

Google Mail-Schlüsseleinstellungen

Beschreiben Sie Folgendes in der ENV-Datei (erstellt, wenn sie nicht vorhanden ist) direkt unter dem Anwendungsverzeichnis.

GMAIL_KEY=Passwort

Rufen Sie für das hier eingegebene Passwort [Google-Konto] auf (https://myaccount.google.com/intro?utm_source=OGB&tab=mk&utm_medium=act) und geben Sie das generierte App-Passwort ein.

Sicherheit → Google-Anmeldefeld Wenn Sie keine zweistufige Authentifizierung eingerichtet haben, richten Sie diese zuerst ein und generieren Sie dann ein App-Kennwort. Geben Sie hier das generierte Passwort ein.

Die Implementierung ist hier abgeschlossen.

Jetzt, wenn Sie eine E-Mail vom Anfrageformular senden スクリーンショット 2020-10-25 23.32.31.png

Ich konnte sicher senden und empfangen.

Recommended Posts

Implementieren Sie ein Kontaktformular in Rails
Markdown in Rails implementiert
So implementieren Sie eine ähnliche Funktion in Rails
Implementieren Sie die Anwendungsfunktion in Rails
So implementieren Sie eine nette Funktion in Ajax mit Rails
Fügen Sie eine Suchfunktion in Rails hinzu.
3 Implementieren Sie einen einfachen Interpreter in Java
Implementieren Sie eine einfache Anmeldefunktion in Rails
Erstellen Sie eine neue App mit Rails
Implementieren Sie den gRPC-Client in Ruby
Implementieren Sie die CSV-Download-Funktion in Rails
[Rails] Eine einfache Möglichkeit, eine Selbsteinführungsfunktion in Ihrem Profil zu implementieren
So fügen Sie ein Video in Rails ein
Implementieren Sie so etwas wie einen Stack in Java
So implementieren Sie Ranking-Funktionen in Rails
Implementieren Sie Schaltflächenübergänge mit link_to in Rails
[Rails] Ich möchte Daten verschiedener Modelle in einem Formular senden
Implementieren Sie die Rails-Paginierung
Group_by in Rails
Mit Rails in eine Tag-zu-URL-Zeichenfolge konvertieren
Implementieren Sie Benutzerverwaltungsfunktionen in einem Assistentenformat
Implementieren Sie die Sternebewertungsfunktion mit Raty in Rails 6
Rails Logger Machen Sie sich in 1 Minute eine ungefähre Vorstellung
So erstellen Sie einfach ein Pulldown mit Rails
(Ruby on Rails6) Erstellen von Daten in einer Tabelle
Implementieren Sie Iterationen in View, indem Sie eine Sammlung rendern [Rails]
So speichern Sie gleichzeitig Daten in einem Modell, das einem verschachtelten Formular zugeordnet ist (Rails 6.0.0)
So implementieren Sie die Gastanmeldung in 5 Minuten im Rails-Portfolio
Implementieren Sie die Nachsuchfunktion in der Rails-Anwendung (where-Methode).
Modellassoziation in Rails
Hinzufügen von Spalten in Rails
Führen Sie devise with Rails ein, um Benutzerverwaltungsfunktionen zu implementieren
Implementieren Sie eine mehrspaltige IN-Klausel (Spalte: Bedingung = n: n) in DOMA.
Deaktivieren Sie Turbolinks in Schienen
Ich möchte ein kleines Symbol in Rails verwenden
Wirf Raw SQL mit Rails auf ein Lesereplikat
[Ruby / Rails] Legen Sie einen eindeutigen (eindeutigen) Wert in der Klasse fest
[So fügen Sie ein Video mit Rails in haml ein]
Rails-Konto-BAN implementieren
Implementieren Sie Singleton mit Enum schnell in Java
So schreiben Sie eine Datumsvergleichssuche in Rails
Ich möchte eine Funktion in der Rails Console definieren
^, $ im regulären Ausdruck von Rails
Verwenden Sie Bilder mit Schienen
[Rails 6] So legen Sie ein Hintergrundbild in Rails [CSS] fest
Implementieren Sie CustomView im Code
Migration in Schienen verstehen
[Rails] So laden Sie JavaScript in einer bestimmten Ansicht
Teilen Sie route.rb in Rails6
So implementieren Sie ein kreisförmiges Profilbild mit CarrierWave und R Magick in Rails
[Schienen] Implementieren Sie die Rechenaufgabe