Frage

Ich möchte einen Kontakt, um uns in Rails 3 mit den folgenden Feldern bilden:

  • Name
  • E-Mail
  • 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?

War es hilfreich?

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:

  1. Validierung
  2. Easy / Add entfernen Felder
  3. Einfache Konfiguration
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top