with rails form_with form_for form for example ruby-on-rails forms email contact mail-form

ruby-on-rails - form_with - ruby on rails form select example



Contáctenos funcionalidad en Rails 3 (4)

Actualicé la implementación para estar lo más cerca posible de la especificación REST.

Configuración básica

Puedes usar la gema mail_form . Después de la instalación, simplemente cree un modelo llamado Message similar tal como se describe en la documentación.

# 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 => "[email protected]", :from => %("#{name}" <#{email}>) } end end

Esto ya le permitirá probar el envío de correos electrónicos a través de la consola .

Pagina de contacto

Para crear una página de contacto separada, haga lo siguiente.

# 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

Configura el enrutamiento ...

# config/routes.rb MyApp::Application.routes.draw do # Other resources resources :messages, only: [:index, :create] match "contact" => "messages#index" end

Preparar un formulario parcial ..

// 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''

Y renderiza la forma en una vista ...

// app/views/messages/index.html.haml #contactform.row = render ''form''

Quiero hacer un formulario de contacto en Rails 3 con los siguientes campos:

  • Nombre
  • Email
  • Título del mensaje
  • Cuerpo del mensaje

Los mensajes publicados están destinados a ir a mi dirección de correo electrónico, por lo que no necesariamente debe almacenar los mensajes en la base de datos. ¿Tengo que usar ActionMailer , cualquier gema o complemento para ello?


No pude hacer que el código de este ejemplo funcione y creo que hace las cosas un poco complejas desde que creaste un modelo.

Anywat, hice un formulario de contacto de trabajo y escribí sobre él en un blog. El texto está en portugués, pero el código en sí es (en su mayoría) en inglés http://www.rodrigoalvesvieira.com/formulario-contato-rails/

Nota: utilicé sendmail, no SMTP.


Puede usar la gema Contact Us a través de este enlace: https://github.com/JDutil/contact_us La documentación es clara y puede usarla simplemente.

caracteristicas:

  1. Validación
  2. Fácil / Agregar eliminar campos
  3. Configuración simple

This tutorial es un excelente ejemplo, y es Rails 3

Actualizar:

Este artículo es un mejor ejemplo que el que publiqué anteriormente, funciona sin problemas

Segunda actualización:

También recomendaría fusionar -en algunas de las técnicas descritas en esta transmisión de rieles en la gema active_attr , donde Ryan Bates lo guía a través del proceso de configuración de un modelo de tabla para una página de contacto.

Tercera actualización:

Escribí mi propia publicación de blog basada en pruebas al respecto