在Rails中将变量传递给单引号字符串

时间:2012-05-03 12:22:55

标签: ruby-on-rails ruby-on-rails-3 string

嗨,我正在努力完成一个周末的大学项目,并且已经达到了速度。

该项目的基本思想是使用rails和jQuery Mobile在谷歌地图上显示地理标记的推文。而不是使用twitter api我选择了datasift流式api。

为了使其工作,我需要将查询字符串传递给datasift api,如下所示:

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

其中地理位置“53.33754457198889,-6.267493000000059”是中心,“10”是用于捕获地理标记推文的半径(英里)。

我想在字符串中传递变量,例如

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

但单引号意味着我不能用这个字符串做这个我试图以不同的方式连接字符串而没有快乐,所以如果有人有一些建议或解决方案我会很感激

5 个答案:

答案 0 :(得分:1)

您还可以使用%( )来引用字符串,例如%(twitter.geo exists AND interaction.geo geo_radius "#{@users_location}:#{radius}")

有关您可能使用的其他替代方案,请参阅this

答案 1 :(得分:0)

我更喜欢%()(另一个答案),但您也可以在双引号字符串中使用\"转义引号。所有这些信息都可以在任何Ruby字符串教程/文档中找到。

您也可以使用HERE字符串:

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

答案 2 :(得分:0)

你可以逃避双重报价:

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

我希望它有所帮助

答案 3 :(得分:0)

你不能将变量传递给单引号字符串,但有几种方法可以实现你想要的:

# 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}")

答案 4 :(得分:0)

通过连接创建所需的字符串。类似的东西:

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