未定义的方法`capitalize'为nil:NilClass

时间:2015-01-02 14:14:57

标签: ruby-on-rails

朋友我发现大写的nil方法错误。但我不知道为什么。请帮助我谢谢

    <% if current_user %>  
      Hi <%=current_user.name.split(' ').first.capitalize %>, please.</p>
    <% end %>

2 个答案:

答案 0 :(得分:3)

当前登录的特定用户有一个&#34;空白&#34;名。

current_user.name #=> ""
current_user.name.split #=> []
current_user.name.split.first #=> nil
current_user.name.split.first.capitalize #=> Error

作为快速解决方案,请将代码更改为:

current_user.name.split.first.to_s.capitalize

但名称仍然显示为空白。

答案 1 :(得分:3)

尽量避免这种长链。 我可以建议,转到current_user类定义并添加方法:

def first_name
  name.split(' ').first
end

回到您的模板,您可以使用try()方法

<%=current_user.first_name.try(:capitalize) %>

下一步可能是将first_()方法从current_user移动到某个包装类中。阅读有关演示者的更多信息,以实现这一目标。