要设置一个字符串数组中@tag
和\"
表示escaped character,在这种情况下"
这是使用红宝石代表String
对象。
考虑下面的代码(试试IRB):
foo = ["bar", "baz"]
#=> ["bar", "baz"]
foo.inspect
#=> "[\"bar\", \"baz\"]"
foo.each { |f| puts "tag: #{f}" }
# tag: bar
# tag: baz
正如你所看到的,确实没有\
字符从字符串,红宝石它只是如何输出String
表示剥离。所以,你的代码并不需要.strip
方法:
@tags = []
params[:tags].split(', ').map do |tag|
@tags.push(tag)
end
不相关的问题,但仍然具有现实意义:split
方法将返回一个数组,所以没有必要创建一个再前推项目对它;只需将返回的数组分配到@tags
即可。
例如:
params[:tags] = "witcher 3, badass, epic"
#=> "witcher 3, badass, epic"
@tags = params[:tags].split(', ')
#=> ["witcher 3", "badass", "epic"]
如果你愿意,你仍然可以使用map
和strip
除去开头和结尾的空格:
params[:tags] = "witcher 3, badass , epic "
#=> "witcher 3, badass , epic "
params[:tags].split(",").map(&:strip)
#=> ["witcher 3", "badass", "epic"]
这是有史以来第一次我虽然是一个堆栈溢出问题不是一个问题。谢谢你的亮点! – Jaeger
@Jaeger很高兴帮助!另请检查更新后的答案,以获取代码的其他提示。 – Gerry
谢谢,我已经知道这些技巧,但我很快就会使用它们:) – Jaeger