私はundefined method 'social_system' for #User:0x000001052e2ad8
を取得しています。私はブロックの価値を使用していると思った、誰かが私が間違っていることを説明することができますか?Rails 3:ブロック内で変数を使用しようとすると未定義のメソッドを取得する
# User model:
facebook_url string
google_plus_url string
# Constants defined in User model:
SOCIAL_SYSTEMS = [ 'facebook_url', 'google_plus_url' ]
SOCIAL_SYSTEM_NAMES = { 'facebook_url' => 'Facebook',
'google_plus_url' => 'Google +' }
# View (going to be a helper eventually)
<% User::SOCIAL_SYSTEMS.each do |social_system|
url = @user.send(social_system)
if url %>
<p><a href="<%= url %>">
<%= User::SOCIAL_SYSTEM_NAMES[social_system] -%>
</a></p>
<% end
end
%>
:変数
social_system
は 'facebook_url'、 'google_plus_url'エコー検査の値のみを持っている必要があります。私はエラーが '@ user.send(social_system)'行から出ていると仮定します。どのバージョンのRubyを使用していますか? Ruby 1.9.2に違いがない限り、 'send_'メソッドは文字列をうまく取ることができるはずなので、' @ user.send(social_system.to_sym) 'を試してみることはできますが、それは単なる推測です。私は知らない。 – bricker