2011-08-02 18 views
0

私はこのコードブロックを持っています。配列を文字列に変換せずに#{}を使用する方法

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

しかし、私はこれを実行すると、私はこれを回避することができ、アレイがstring.Howに変換され

Student.paid('anarray') 

として「変数」の値を取得しています。 plsヘルプ

答えて

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

関連する問題