Rails,从数组中删除字符串引号,而不将其转换为字符串

时间:2016-10-26 21:15:31

标签: ruby-on-rails arrays

我有一个方法,它将数组作为参数,例如:

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

1 个答案:

答案 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是一个符号。