2009-06-18 19 views
1

いいえ。だから私は連絡先と呼ばれるテーブルがあります。この表では、私は人を持っており、連絡先の情報や連絡方法(電話、住所、Eメール、またはファックス)がどのようになっていますか。私は、ルビーが電子メールアドレスバーなどに貼り付けることができる方法でその人のリストを出力させたいと思っています。Ruby on Rails - 変数の中の変数

<% @contacts.each do |contact| %> 
     <%=h contact.contact_name %> < <%=h contact.preferred_method %> >, 
<% end %> 

これは機能しますが、私がしたいことはしません。私はそれを期待しませんでした。ですから、希望の選択肢が電子メールである人のリストの場合は、リストを出力します。

マイク<メール>、ジョー・<メール>、ジョン<アドレス>、サラ<電話>

代わりの

Mike <[email protected]>, Joe <[email protected]>, John <2014 Street>, Sarah <111-111-1111> 

それはpreferred_methodを呼び出しますが、私は実際にそれがやりたいことはあります...

<% @contacts.each do |contact| %> 
     <%=h contact.contact_name %> < <%=h contact.<%=h contact.preferred_method %> >, 
<% end %> 

私は、そのpreferred_methodに応じてcontact.addressまたはcontact.phoneを取得します。しかし明らかにそれはうまくいきません。だから私は変数に <%=h contact.preferred_method %>を割り当てようと考えました。

x = contact.preferred_method 

そして

<% @contacts.each do |contact| %> 
     <%=h contact.contact_name %> < <%=h contact.x %> >, 
<% end %> 

を持っていますが、それはどちらか動作しません。

ご協力いただければ幸いです。

マイク

答えて

2

sendメソッドを使用できます。

<%=h contact.send(contact.preferred_method.downcase) %> 

受信オブジェクトのシンボルまたは文字列で識別されるメソッドを呼び出します。

contact.send(:email) 
contact.send('address') 

私はあなたのメソッド名は、「電子メール」ではない[メール]

であると仮定ので、私はcontact.preferred_methodにdowncaseを設定注意
関連する問題