【问题标题】:Rails - when a row returns nilRails - 当一行返回 nil
【发布时间】:2013-04-21 00:08:27
【问题描述】:

我在加载我的视图时遇到此错误,该视图的模型用户中没有任何记录。如果没有记录,我只是希望它在视图中返回“未分配”。否则,显示用户的名字和姓氏。当记录存在时,显示用户的名字和姓氏会按预期工作。

我已经弄乱了许多不同的组合,但看不到让它发挥作用。

错误:

undefined method `full_name' for nil:NilClass

tickets.index.html.erb中:

<% @tickets.each do |ticket| %>
  <%= ticket.user.full_name %>
<% end %>

ticket.rb 模型中

def full_name
  if full_name.blank?
    full_name = "Unassigned"
  else
    ticket.user.first_name + ' ' + ticket.user.last_name    
  end
end

【问题讨论】:

    标签: ruby-on-rails methods null


    【解决方案1】:

    问题是当你调用ticket.user 时,它可能是 nil,所以你不能调用任何东西。您在 Ticket 模型上创建一个方法来隔离它的想法是正确的,但是它会调用自己,这将获得一个无限循环,而且您仍然在调用您的用户而不是您的票的方法。试试这个:

    在你看来:

    <% @tickets.each do |ticket| %>
      <%= ticket.full_name %>
    <% end %>
    

    在您的票证模型中:

    def full_name
      if user.nil?
        return "Unassigned"
      else
        return user.full_name
      end
    end
    

    在你的用户模型中:

    def full_name
      return "#{first_name} #{last_name}"
    end
    

    我让用户模型有自己的方法,因此它被进一步隔离(遵循 OO 实践)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 2013-06-15
      相关资源
      最近更新 更多