2010-09-15 37 views
11

Simplemente quiero un formulario de contacto con los campos de nombre, correo electrónico y mensaje en mi aplicación Rails, no quiero guardar (permanentemente) el mensaje Solo quiero enviar el mensaje como un correo electrónico para una cuenta de correo electrónico mio ¿Me puedes ayudar?Formulario de contacto en Rails 3

Gracias!

Respuesta

3

Hice una forma de trabajo y escribió en su blog sobre esto .. el texto está en portugués, pero el propio código es (en su mayoría) en Inglés http://www.rodrigoalvesvieira.com/formulario-contato-rails/

Gracias!

+0

Enlace roto. También redirige a una página muestra un dibujo de un falo que no es la definición de SFW (Safe For Work), que es un lugar donde alguien probablemente buscaría un formulario de contacto de rieles. Obrigado. –

15

En Rails3, puede crear un modelo ActiveModel:

# /app/models/contact_us.rb 
class ContactUs 

    include ActiveModel::Validations 
    include ActiveModel::Conversion 
    extend ActiveModel::Naming 

    attr_accessor :name, :email, :message 

    def initialize(attributes = {}) 
    attributes.each do |name, value| 
     send("#{name}=", value) 
    end 
    end 

    def persisted? 
    false 
    end 
end 

continuación, un anuncio publicitario:

# /app/mailer/contact_us_mailer.rb 
class ContactUsMailer < ActionMailer::Base 

    default :to => "[email protected]" 

    def send(message) 
    @message = message 
    mail(:subject => @message.subject, :from => @message.email) do |format| 
     format.text 
    end 
    end 
end 

y una vista:

# /app/views/contact_us_mailer/sent.text.erb 
Message sent by <%= @message.name %> 
<%= @message.message %> 

no he probado este código exactamente, pero solo quiero dejar que entiendas la idea ...

+3

¿Por qué es esta la mejor manera? ¿Por qué crear un modelo para él en primer lugar? ¿Por qué no simplemente publicar el formulario contact_us en una acción contact_us en el controlador que luego desencadena el correo? – AdamT

+0

Este es un buen ejemplo, simplemente no use "enviar" como nombre de método, ya que es una palabra clave reservada. La razón para tener un modelo es agregar validaciones, por lo que querría verificar el modelo con válido? en tu controlador. –

7

Escribí un Rails Engine https://github.com/jdutil/contact_us que puede colocar fácilmente en cualquier aplicación de Rails 3+. No agregué un campo Nombre al formulario, pero puede bifurcar el informe y modificarlo para adaptarlo a sus necesidades. Requiere la gema Formtastic ya que quería una forma fácil de enganchar a los estilos de formas existentes.

para instalar el motor añadir la gema contact_us a su Gemfile:

gem 'contact_us', '~> 0.4.0' 

paquete Run y ​​la tarea rake instalar:

$ bundle 
$ bundle exec rake contact_us:install 

A continuación, sólo modificar el inicializador generada en/config/inicializadores/contact_us.rb para que le enviemos el correo electrónico al que desea enviar los formularios.

+0

Guau, ¡muy agradable! – rodrigoalves

+0

@jDutil ¿necesitamos agregar configuraciones SMTP en los archivos de configuración de evironment? – mrudult

+0

Deberá configurar su ActionMailer para que le envíe sus correos electrónicos, sin embargo, le gustaría que los envíe. La gema contact_us simplemente proporciona el formulario y el programa de envío, depende de usted configurar el método de envío de su aplicación. – JDutil