在Ruby中访问字符串中的符号

时间:2015-01-27 14:45:19

标签: ruby string symbols

Ruby的新手在这里,我试图找出一些东西。我遇到过以下情况:

sql = q%{select foo from bar where var1 = :ugh and var2 = :moreugh}

现在,我可以打印变量" sql",但如果我只使用puts和#{sql},它会显示上面的符号,":ugh"。

我希望能够使用显示的符号的值而不是符号的名称来打印字符串sql。

有任何指针吗?非常感谢!

4 个答案:

答案 0 :(得分:0)

您的示例代码已损坏,我假设您要执行单引号字符串%q{...}

这正是你得到的:一个字符串。所以那里没有符号,它只是一个字符串。类似于'...'

答案 1 :(得分:0)

我认为,假设您使用符号而不是字符串,您可以使用以下查询:

sql = "select foo from bar where var1 = 'ugh' and var2 = 'moreugh'"

因此,使用puts#{sql}会为您提供正确的输出。

如果这不符合您的要求,请发表评论。

答案 2 :(得分:0)

您有两个错误。您需要使用%Q启用插值,变量以#{:ugh}的形式包含在字符串中。所以,你想要:

sql = %Q{select foo from bar where var1 = #{ugh} and var2 = #{moreugh}}
puts sql

但请拜托,请不要这样做,即使只是为了一个小项目。您正在为SQL注入attacj做好准备。

答案 3 :(得分:0)

你可能想要这个:

sql = "select foo from bar where var1 = '#{ugh}' and var2 = '#{moreugh}"'

其中ughmoreugh是变量。但是,你应该这样做,你的系统将开放SQL注入。请改用数据库引擎中的绑定变量。