如何使用#{}而不将数组转换为字符串

时间:2011-08-02 23:49:46

标签: ruby-on-rails ruby arrays

我有这个代码块。

query  = ['an','array']
@a = params[:action] == 'show' ? "paid" : "paid_students"
variable = "Student.#{@a}(#{query})"
eval(a)

但是当我运行这个时,我得到的是“变量”值

Student.paid('anarray') 

数组转换为字符串。如何避免这种情况。请帮忙

2 个答案:

答案 0 :(得分:3)

#{}符号是字符串插值。它的全部目的是将一个对象转换为一个字符串并将其插入另一个字符串。如果你想把它变成另一种字符串,你当然可以这样做。例如,如果您想将其转换为字符串"[1, 2, 3]",则可以执行variable = "Student.#{@a}(#{query.inspect})"

但是,做一个你想要做的事情的更好方法是:

query  = ['an','array']
@a = params[:action] == 'show' ? :paid : :paid_students
Student.send(@a, query)

有关更多信息,请参阅Ruby Object#send documentation

答案 1 :(得分:2)

variable = "Student.#{@a}(query)"

不起作用?