Ruby on Rails: formato extraño de cadena a matriz en el análisis de correo electrónico

Puedo obtener el cuerpo de un correo electrónico en formato de cadena así

cuerpo = params[:simple]

Y cuando lo envío, se ve así:

Hola.

--
John B.

Enviado desde mi iPhone.

Ahora, cuando intento dividir por nueva línea body.split("\n") Yo obtengo:

. . .
- ! 'Hola.'
- ''
- ! '--'
- Juan B.
- ''
- Enviado desde mi iPhone.

Realmente no entiendo los guiones y flequillos adicionales. ¿Alguna idea?

También si lo hago body[2] yo obtengo --, pero body.index("--") no me devuelve nada.

ACTUALIZACIÓN

En mi controlador ReceivingMails:

...

def create
  body = params[:plain]
  parsed_body = parse_body(body)
  Comment.new(:content => parsed_body)
end

private

def parse_body(body)
  split = body.split("\n")
  sig_index = split.index("-- ")
  return split[0, sig_index].join("\n")
end

En mi opinión, los comentarios se muestran como: <%= simple_format(comment.content)%>

ACTUALIZACIÓN 2

Cuando hago algo como, body.split("\n").to_s Obtengo el aspecto que debería tener la matriz esperada (como String): ["Hi there. ", "", "-- ", "John B.", "", "Sent from my iPhone."]

preguntado el 12 de junio de 12 a las 22:06

Está serializando la matriz en YAML, aunque no sé por qué. -

hmmm si ese es el caso, ¿cómo puedo deserializar de nuevo a la normalidad? Encontré este artículo en el que estoy trabajando. skorks.com/2010/04/… -

Sin ningún contexto es difícil saber cómo ayudar. Si lo ha serializado en, por ejemplo, una base de datos, simplemente vuelva a leerlo. Cómo lo está mostrando y todo lo demás, y no lo sabemos. -

Me temo que no estoy 100% seguro de lo que estás preguntando o buscando. Todo lo que intento hacer es realizar algunas operaciones de matriz en una variable local, body, antes de asignar esa variable a un atributo de modelo en la base de datos. Agregaré cualquier operación que esté haciendo en una actualización:

1 Respuestas

No creo que params[:plain] sea en realidad una cadena; creo que debería probarlo para averiguar qué es realmente. Por ejemplo, intente:

puts params[:plain].class

Respondido el 13 de junio de 12 a las 00:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.