我得到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
%>
据我所知,这应该工作。我假设错误来自'@ user.send(social_system)'行。你使用的是什么版本的Ruby?你可以*尝试* @user.send(social_system.to_sym)',但这只是一个猜测,因为'send'方法应该能够取得字符串,除非Ruby 1.9.2有所不同,我不知道。 – bricker