Ruby on rails 添加时的ruby字符串转义

Ruby on rails 添加时的ruby字符串转义,ruby-on-rails,ruby,Ruby On Rails,Ruby,在RubyonRails中,我得到了一个由3部分组成的字符串编号:前缀、计数器、后缀 在模型设置中: def self.number prefix = setup.receipt_prefix.blank? ? "" : setup.receipt_prefix.to_s counter = setup.receipt_counter.blank? ? "" : setup.receipt_counter+1 suffix = setup.receipt_suffix.blank? ? "" :

在RubyonRails中,我得到了一个由3部分组成的字符串编号:前缀、计数器、后缀

在模型设置中:

def self.number
prefix = setup.receipt_prefix.blank? ? "" : setup.receipt_prefix.to_s
counter = setup.receipt_counter.blank? ? "" : setup.receipt_counter+1
suffix = setup.receipt_suffix.blank? ? "" : setup.receipt_suffix.to_s
每个字符串都显示精细:

puts prefix 
=>\#_

=> 1234

=> #$@s

但当我将3个字符串加在一起时,会出现一个加反斜杠:

prefix + counter + suffix
=> \\#_1234\#$@s

当我将3个字符串加在一起时,如何转义“\”?像

=> \#_1234#$@s

我可以在模型中使用Ruby或Rails的助手吗?
thx~~~

如果您获得值,而不是打印(输出)值,则字符串的外观会有所不同。请参阅以下
irb
会话

>> a = "\\#_"
=> "\\#_"
>> puts a
\#_
=> nil
>> b = "1234"
=> "1234"
>> puts a + b
\#_1234
=> nil
>> a + b
=> "\\#_1234"

实际字符串值中有两个反斜杠。但如果打印字符串,则只显示一个。

前缀和后缀由用户自定义并存储在数据库中,如果我需要生成一个结合这三个元素的字符串,在某些用户输入一些奇怪的值时,我可以做些什么来转义所有内容?实际上,不,实际字符串只有一个反斜杠,但是当
inspect
ing字符串时,它会被转义。@Gz-Rain:如果使用参数化查询或ORM(如果使用ActiveRecord,则不必转义)。ORM将为您完成所有需要的转义。
prefix + counter + suffix
>> a = "\\#_"
=> "\\#_"
>> puts a
\#_
=> nil
>> b = "1234"
=> "1234"
>> puts a + b
\#_1234
=> nil
>> a + b
=> "\\#_1234"