Hola,
Mi objetivo es crear un formulario de contacto y se envÃe
automáticamente por email.
Le he echado un vistazo las guÃas de rails pero no encuentro una manera
de validar los campos del formulario.
Veréis, tengo un controlador llamado contacto con un método llamado
sendmail. en la vista tengo un formulario cuya acción recae sobre el
método sendmail.
contacto_controller:
def sendmail
Emailer.deliver_contact
return if request.xhr?
render :text => ‘Message sent successfully’
end
y como podeis observar hago uso de la clase Emailer < ActionMailer::Base
cuyo archivo model contiene:
def contact
recipients “[email protected]”
from “[email protected]”
subject “Contacto desde la web”
sent_on Time.now
end
El email se envÃa pero querÃa saber si hay alguna manera de validar los
campos del formulario al igual que se hace en activerecord con
validates_presence_of (esto no funciona en activemailer). Tampoco
funciona la opción de crear un before_filter.
Lo dicho, tengo un fallo de conceptos. a ver si alguien me puede
despejar dudas alr especto.
Js Ponja wrote:
Hola,
Mi objetivo es crear un formulario de contacto y se envÃe
automáticamente por email.
Le he echado un vistazo las guÃas de rails pero no encuentro una manera
de validar los campos del formulario.
Veréis, tengo un controlador llamado contacto con un método llamado
sendmail. en la vista tengo un formulario cuya acción recae sobre el
método sendmail.
contacto_controller:
def sendmail
Emailer.deliver_contact
return if request.xhr?
render :text => ‘Message sent successfully’
end
y como podeis observar hago uso de la clase Emailer < ActionMailer::Base
cuyo archivo model contiene:
def contact
recipients “[email protected]”
from “[email protected]”
subject “Contacto desde la web”
sent_on Time.now
end
El email se envÃa pero querÃa saber si hay alguna manera de validar los
campos del formulario al igual que se hace en activerecord con
validates_presence_of (esto no funciona en activemailer). Tampoco
funciona la opción de crear un before_filter.
Lo dicho, tengo un fallo de conceptos. a ver si alguien me puede
despejar dudas alr especto.
Siempre puedes crearte un metodo que evalue si los campos estan
rellenados
def sendmail
evalua_campos if params[:cuestionario]==true
Emailer.deliver_contact
return if request.xhr?
render :text => 'Message sent successfully'
end
def evalua_campos
if params[:cuestionario][:primer_parametro].blank?
…
elsif…
elsif…
redirect_to …
end
Ves mirando todos los campos. Si alguno esta en blanco ya haces lo que
quieras…incluso puedes llamarlo evalua_campos_manda_mail y si todos
los campos estan rellenados entonces mandas el email.
Quizas no sea la mejor solucion, pero a estas horas es lo primero que se
me viene a la cabeza.
Salu2
Gracias por contestar tán rápido.
SuponÃa que tenÃa que haber alguna manera de no tener que utilizar
tablas y poder utilizar los modelos con sus validadores. me ha gustado.
Joripel gracias, iba a utilizar esa técnica si no se podÃa utilizar los
validadores del modelo.
Creo que utilizaré “tableless”.
Un saludo lista.