Pasar variables a cadenas entre comillas simples en Rails

Hola, estoy tratando de completar un proyecto universitario para el fin de semana y me he topado con un bache.

La idea básica del proyecto es mostrar tweets geoetiquetados en Google Maps usando Rails y jQuery Mobile. En lugar de usar la API de Twitter, opté por la API de transmisión de datos.

Para que esto funcione, necesito pasar una cadena de consulta a la API de datasift que se ve así:

'twitter.geo exists AND interaction.geo geo_radius "53.33754457198889,-6.267493000000059:10"'

donde la geolocalización "53.33754457198889,-6.267493000000059" es el centro y el "10" el radio en millas alrededor del cual capturar tweets geoetiquetados.

Quiero pasar variables en la cadena, por ejemplo

'twitter.geo exists AND interaction.geo geo_radius "#{@users_location}:#{radius}"'

pero las comillas simples significan que no puedo hacer esto con esta cadena. He intentado concatenar la cadena de diferentes maneras sin alegría, así que si alguien tiene algún consejo o una solución, se lo agradecería.

preguntado el 03 de mayo de 12 a las 13:05

Gracias chicos, estoy en la oficina en este momento, así que cuando llegue a casa revisaré las respuestas y me pondré en contacto con ustedes, ¡gracias! -

5 Respuestas

También puedes usar %( ) para citar la cadena, como %(twitter.geo exists AND interaction.geo geo_radius "#{@users_location}:#{radius}").

Vea este para algunas otras alternativas que puede utilizar.

contestado el 03 de mayo de 12 a las 13:05

No puede pasar variables a cadenas entre comillas simples, pero existen varios métodos para lograr lo que desea:

# use a double quouted string and escape the quotes inside the string
"twitter.geo exists AND interaction.geo geo_radius \"#{@users_location}:#{radius}\""

# use single quotes and concat several strings
'twitter.geo exists AND interaction.geo geo_radius "' + @users_location + ':' + radius + '"'

# just use single quotes in a double quoted string
"twitter.geo exists AND interaction.geo geo_radius '#{@users_location}:#{radius}'"

# as the other answers suggest use %()
%(twitter.geo exists AND interaction.geo geo_radius "#{@users_location}:#{radius}")

contestado el 03 de mayo de 12 a las 13:05

Me gusta %() mejor (la otra respuesta), pero también puede escapar de las comillas con \" dentro de una cadena entre comillas dobles. Toda esta información se puede encontrar en casi cualquier tutorial/documentación de cadenas de Ruby.

También puede usar cadenas AQUÍ:

s = <<FOO
  twitter.geo exists AND interaction.geo geo_radius "#{@users_location}:#{radius}"
FOO

contestado el 03 de mayo de 12 a las 13:05

Puedes escapar de las comillas dobles:

"twitter.geo exists AND interaction.geo geo_radius \"#{@users_location}:#{radius}\""

Espero que ayude

contestado el 03 de mayo de 12 a las 13:05

Cree la cadena que necesita por concatenación. Algo como:

 str = "'twitter.geo exists AND interaction.geo geo_radius " + '"' + "#{@users_location}:#{radius}" + '"' + "'"

contestado el 03 de mayo de 12 a las 13:05

Ja, cuando comencé a responder esto, no se habían publicado otras respuestas. Para cuando he terminado, solo estoy repitiendo la respuesta de otra persona. Mmm ... - noviembrekilo

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