Hola a todos, este es mi post primer post, gracias por leerme. Estoy
intentando realizar un ejemplo muy basico para enviar mails a traves
gmail usando smtp, por lo que he leido en versiones anteriores de rails
era necesario instalar un plugin, no asi en la version actual. yo uso
rails v3.2.3
el error que me da es:
ArgumentError in EmailerController#index
wrong number of arguments (1 for 0)
parece ser que no he inicializado algo, pero no se que es. He hecho lo
siguiente:
rails mail-example
generamos solamente el modelo Emailer, esto creara
/app/model/emailer.rb y una carpeta para en app/views
ruby script/generate mailer Emailer
crea un fichero /config/initializers/mail.rb con el contenido
de la configuracion, como sigue
Email settings
ActionMailer::Base.delivery_method = :smtp #modo de entrega
ActionMailer::Base.smtp_settings = {
:enable_starttls_auto => true, #solo para gmail
:address => “smtp.gmail.com”,
:port =>587,
:domain => “yourapplication.com”,
:authentication => :plain,
:user_name => “[email protected]”,
:password => “el_password_de_mi_cuenta”
}
rellenamos el modelo emailer.rb con
class Emailer < ActionMailer::Base
def contact(recipient, subject, message, sent_at = Time.now)
@subject = subject
@recipients = recipient
@from = ‘[email protected]’
@sent_on = sent_at
@body[“title”] = ‘Este es el titulo del mail \n’
@body[“email”] = ‘[email protected] \n’
@body[“message”] = message
@headers = {}
end
end
creo el controller
ruby script/generate controller Emailer
rellenamos el controller con los metodos write send, y sended
def write
end
def send
end
def sended
end
crea las siguiente views
/app/views/emailer/write.html.erb
/app/views/emailer/sended.html.erb
rellenamos la vista write.html.erb
Redactar mensaje
<% form_tag 'fsendmail' %>destinatario <%= text_field_tag 'destino'%>
asunto <%= text_field_tag 'asunto'%>
mensaje <%= text_area_tag 'mensaje'%>
<% submit_tag 'send'%>
rellenamos el metodo send del controlador
def send
#usando los parametros enviados del usuario
result =
deliver_contact(params[“destino”],params[“asunto”],params[“mensaje”])
params[“result”] = result
redirect_to :action=>‘sended’
end
rellenamos la vista sended.html.erb
datos correo
result <%=params["result"]%>
email <%=params[“destino”]%>
email2 <%=@email%>
subject <%=params[“asunto”]%>
recipient <%=params[“destino”]%>
message <%=params[“mensaje”]%>
arranco el servidor ruby script/server
pongo la url ‘http://127.0.0.1:3000/emailer’
ArgumentError in EmailerController#index
wrong number of arguments (1 for 0)
Gracias por adelantado