Kontaktieren sie uns Funktionalität in Rails 3
-
02-10-2019 - |
Frage
Ich möchte einen Kontakt, um uns in Rails 3 mit den folgenden Feldern bilden:
- Name
- Nachrichtentitel
- Nachrichtentext
Die geposteten Nachrichten sollen meine E-Mail-Adresse gehen, damit ich neccessarily nicht die Nachrichten in der Datenbank speichern müssen. Muss ich verwenden ActionMailer
, jede Perle oder Plugin für sie?
Lösung
Dieses Tutorial ist eine ausgezeichnete Beispiel - und es ist Rails 3
Update:
Dieser Artikel ist ein besseres Beispiel als die, die ich früher geschrieben, funktioniert einwandfrei
Zweites Update:
Ich würde auch verschmelzenden-in einigen der in dieser Railscast auf der active_attr Juwel, wo Ryan Bates Sie durch den Prozess ein Tabless Modell der Einrichtung Wanderungen für eine Kontaktseite.
Drittes Update:
ich meine eigenen Test-Driven Blog-Post über sie
Andere Tipps
ich die Implementierung aktualisiert so nahe wie möglich an die REST-Spezifikation.
Grundeinstellungen
Sie können das mail_form gem . Nach der Installation einfach erstellen ein Modell namens Message
ähnlich wie es in der Dokumentation beschrieben ist.
# app/models/message.rb
class Message < MailForm::Base
attribute :name, :validate => true
attribute :email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
attribute :message_title, :validate => true
attribute :message_body, :validate => true
def headers
{
:subject => "A message",
:to => "contact@domain.com",
:from => %("#{name}" <#{email}>)
}
end
end
Dies wird schon können Sie Senden von E-Mails über die Konsole testen.
Kontaktseite
Um eine separate Kontaktseite gehen Sie wie folgt zu erstellen.
# app/controllers/messages_controller.rb
class MessagesController < ApplicationController
respond_to :html
def index
end
def create
message = Message.new(params[:contact_form])
if message.deliver
redirect_to root_path, :notice => 'Email has been sent.'
else
redirect_to root_path, :notice => 'Email could not be sent.'
end
end
end
Setup das Routing ..
# config/routes.rb
MyApp::Application.routes.draw do
# Other resources
resources :messages, only: [:index, :create]
match "contact" => "messages#index"
end
Bereiten Sie eine Form teilweise ..
// app/views/pages/_form.html.haml
= simple_form_for :contact_form, url: messages_path, method: :post do |f|
= f.error_notification
.form-inputs
= f.input :name
= f.input :email, label: 'Email address'
= f.input :message_title, label: 'Title'
= f.input :message_body, label: 'Your message', as: :text
.form-actions
= f.submit 'Submit'
Und machen Sie das Formular in einer Ansicht ..
// app/views/messages/index.html.haml
#contactform.row
= render 'form'
Ich konnte nicht den Code dieses Beispiels Arbeit machen, und ich denke, dass es die Dinge ein wenig kompliziert macht, da Ihr ein Modell zu schaffen.
Anywat, hat ich eine Arbeits Kontaktformular und darüber gebloggt .. der Text auf Portugiesisch, aber der Code selbst ist (meist) in Englisch http://www.rodrigoalvesvieira.com/formulario-contato-rails/
. Hinweis: Früher habe ich Sendmail, nicht SMTP
Sie können Kontakt benutzen Sie uns gem über diesen Link: https://github.com/JDutil/contact_us Die Dokumentation ist klar, und Sie können es einfach verwenden.
Eigenschaften:
- Validierung
- Easy / Add entfernen Felder
- Einfache Konfiguration