2011-08-02 56 views
0

我有這個代碼塊。如何使用#{}而不將數組轉換爲字符串

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

但是,當運行此我正在「可變的」值作爲

Student.paid('anarray') 

我能避免這種情況的陣列被轉換爲string.How。請幫助

回答

3

#{}符號是字符串插值。它的全部用途是將一個對象轉換爲一個字符串並將其內插到另一個字符串中。如果你想把它變成一種不同類型的字符串,你當然可以做到這一點。例如,如果你想把它變成字符串"[1, 2, 3]",你可以做variable = "Student.#{@a}(#{query.inspect})"

但更好的方法做你想要做將是這樣的:

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

欲瞭解更多信息,請參見紅寶石Object#send documentation

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

不工作?

+0

這也適用於這種情況:)(n00b在這裏)。但他也給了一些筆記..我給大塊的答案作爲接受的答案。 – shajin

相關問題