【发布时间】:2011-10-11 02:14:37
【问题描述】:
我收到undefined method 'social_system' for #User:0x000001052e2ad8。我以为我会使用块中的值,谁能解释我做错了什么?
# 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 中存在我不知道的差异'不知道。
标签: ruby-on-rails ruby-on-rails-3 methods