我生成一个数组:
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 ....
我该怎么做才能解决这个问题?
答案 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)