我有一个方法,它将数组作为参数,例如:
a = ["title", "item"]
我需要摆脱"
,但我很难做到这一点。
我的目标是实现以下目标:
a = [title, item]
这里提出了两种可能的解决方案:Getting rid of double quotes inside array without turing array into a string
eval x.to_s.gsub('"', '')
# => [1, 2, 3, :*, :+, 4, 5, :-, :/]
和
x=["1", "2", "3", ":*", ":+", "4", "5", ":-", ":/"]
=> ["1", "2", "3", ":*", ":+", "4", "5", ":-", ":/"]
x.map{|n|eval n}
=> [1, 2, 3, :*, :+, 4, 5, :-, :/]
我尝试了这两种解决方案,但总是会导致此错误:
undefined local variable or method `title'
如何摆脱阵列中的这些“引号”?
编辑:
我需要改变一个数组。这就是我想要做的事情:
a = ["title", "item"]
应该改为:
a = [model_class.human_attribute_name(:title), model_class.human_attribute_name(:title)]
(这是关于翻译)。
这段代码在model.rb中,也许有帮助。这是我的完整代码:
def humanifier(to_translate_array)
translated = []
to_translate_array.each do |element|
translated.push("model_class.human_attribute_name(:#{element})")
end
return translated
end
答案 0 :(得分:1)
您希望将字符串转换为符号,您可以使用#to_sym
to_translate_array.each do |element|
translated.push("model_class.human_attribute_name(#{element.to_sym})")
end
或者如果你真的想要翻译的价值,(而不仅仅是一个字符串" model_class.human ...")
to_translate_array.each do |element|
translated.push(model_class.human_attribute_name(element.to_sym))
end
"title"
是一个字符串,:title
是一个符号。