符号但不在数组中

时间:2015-01-12 22:14:37

标签: ruby-on-rails ruby ruby-on-rails-3

我生成一个数组:

self.attributes.keys.map(&:to_sym) - [:created_at, :updated_at] + [:warte]  

问题是,当我尝试将其传递给:

时,此代码会抛出错误
json.(self, self.attributes.keys.map(&:to_sym) - [:created_at, :updated_at] + [:warte] ) 

TypeError ([:id, :name, :vorname, ....] is not a symbol):

因为我需要简单地用','分隔符号:

 json.(self, :id, :name ....

而不是像我现在拥有的那样:

 json.(self, [:id, :name ....

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:2)

您正在寻找splat(*)运算符:

json.(self, *(self.attributes.keys.map(&:to_sym) - [:created_at, :updated_at] + [:warte]))

According to ruby-doc.org,splat运算符可用于将数组转换为参数列表:

  

数组到参数转换

     

考虑以下方法:

def my_method(argument1, argument2, argument3)
end
     

您可以使用*(或splat)将数组转换为参数列表   操作者:

arguments = [1, 2, 3]
my_method(*arguments)
     

或:

arguments = [2, 3]
my_method(1, *arguments)
     

两者都相当于:

my_method(1, 2, 3)

Source