Ruby on rails 尝试联接两个表并显示正确的信息

Ruby on rails 尝试联接两个表并显示正确的信息,ruby-on-rails,ruby,Ruby On Rails,Ruby,快速解释,它抓住当前用户的追随者,并将他们加入到发送/接收的消息中。一次只显示一个 我用它来显示收件箱中的“消息”,该部分工作正常,因为我想按最新发送或接收的消息id来订购该收件箱 现在我的观点是这样的,(这真是一团糟,我知道我有办法用ruby做得更干净) 试试这个 -if f.sent_messages.first && f.received_messages.first -if f.sent_messages.last.id > f.received_message

快速解释,它抓住当前用户的追随者,并将他们加入到发送/接收的消息中。一次只显示一个

我用它来显示收件箱中的“消息”,该部分工作正常,因为我想按最新发送或接收的消息id来订购该收件箱

现在我的观点是这样的,(这真是一团糟,我知道我有办法用ruby做得更干净)

试试这个

-if f.sent_messages.first && f.received_messages.first
  -if f.sent_messages.last.id > f.received_messages.last.id
    p This is running
    =image_tag f.avatar
    h2= f.uid
    p= f.sent_messages.last.body
    =link_to "Go To Conversation", conversation_path(:id => f.sent_messages.last.sender_id)
  -else
    =image_tag f.avatar
    h2= f.uid
    p= f.received_messages.last.body
    =link_to "Go To Conversation", conversation_path(:id => f.received_messages.last.receiver_id)
  end
-elsif f.sent_messages.first && f.received_messages.first == nil
  =image_tag f.avatar
  h2= f.uid
  p= f.sent_messages.last.body
  =link_to "Go To Conversation", conversation_path(:id => f.sent_messages.last.sender_id)
-elsif f.sent_messages.first == nil && f.received_messages.first
  =image_tag f.avatar
  h2= f.uid
  p= f.received_messages.last.body
  =link_to "Go To Conversation", conversation_path(:id => f.received_messages.last.receiver_id)

我之所以有如此大规模的elsif声明,是因为如果其中一个用户没有发送或接收此类信息,它将破坏页面。这是由于某种原因造成的。它仍然在检测消息的不存在信息并抛出一个错误。你能发布错误吗?这将有助于确定问题。因此,我编辑了我的帖子,因为我假设你使用的是haml,我忘记了运行ruby代码的几个字符。是的,请给我一些修改,我实际上使用的是slim。
-if f.sent_messages.first && f.received_messages.first
  -if f.sent_messages.last.id > f.received_messages.last.id
    p This is running
    =image_tag f.avatar
    h2= f.uid
    p= f.sent_messages.last.body
    =link_to "Go To Conversation", conversation_path(:id => f.sent_messages.last.sender_id)
  -else
    =image_tag f.avatar
    h2= f.uid
    p= f.received_messages.last.body
    =link_to "Go To Conversation", conversation_path(:id => f.received_messages.last.receiver_id)
  end
-elsif f.sent_messages.first && f.received_messages.first == nil
  =image_tag f.avatar
  h2= f.uid
  p= f.sent_messages.last.body
  =link_to "Go To Conversation", conversation_path(:id => f.sent_messages.last.sender_id)
-elsif f.sent_messages.first == nil && f.received_messages.first
  =image_tag f.avatar
  h2= f.uid
  p= f.received_messages.last.body
  =link_to "Go To Conversation", conversation_path(:id => f.received_messages.last.receiver_id)
-if f.sent_messages.any? || f.received_messages.any?
  =image_tag f.avatar
  %h2 = f.uid
  -unless f.sent_messages.empty? || f.received_messages.empty?
    -message,id = f.sent_messages.last.id > f.received_messages.last.id ? [f.sent_messages.last,f.sent_messages.last.sender_id] : [f.received_messages.last, f.received_messages.last.receiver_id]
  -else
    -message,id = f.sent_messages.last.nil? ? [f.received_messages.last,f.received_messages.last.receiver_id] : [f.sent_messages.last,f.sent_messages.last.sender_id]
  %p = message.body
  =link_to "Go To Conversation", conversation_path(:id => id)