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
- 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:
- Validación
- Fácil / Agregar eliminar campos
- 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