【问题标题】:Rails application helper return if false如果为 false,Rails 应用程序助手返回
【发布时间】:2015-10-09 14:50:47
【问题描述】:

我正在编写一个辅助方法来确定 current 是否有待写的评论。如果有待审核,只需在视图中打印一行。 我的助手正在将正确的东西放到控制台中,但是我正在努力解决如何简单地返回它。在这种情况下,当前用户有一个 id:4。 我的代码:

def review_pending
  gallery = current_user.galleries.first
  if gallery
    if gallery.permissions.accepted
      gallery.permissions.accepted.each do |p|

        return true if p.user.reviews.find_by_reviewer_id(!current_user)
        puts "already written review: #{p.user.reviews.find_by_reviewer_id(4)} - prints correctly"

      end
    end
  end
end

我的目标:如果列表中存在当前用户尚未审核的用户,则返回 true。

谢谢!!!

【问题讨论】:

  • 你想要什么输出?
  • 你为什么将!current_user 传递给find_by_reviewer_id!current_user 可能评估为 false。你不应该传递一个 id 吗?
  • 抱歉,更新问题。
  • 是的,您要返回什么?在某处声明var = nil,而不是返回true,而是将var 分配给您喜欢的对象,并在您的视图中检查您的var 是否为nil
  • 谢谢@Zozo 会试一试

标签: ruby-on-rails ruby helper


【解决方案1】:

感谢您的所有指点! 我忘记/学到了两件事使它起作用: 首先,如果返回 nil,ruby 返回最后一个返回值,在我的例子中是 true(如果 gallery.permissions.accepted)。 其次,我放置了“!”在 current_user 之前,并且应该将它放在整行之前。 更正代码:

def review_pending
    gallery = current_user.galleries.first
    if gallery
        gallery.permissions.accepted.each do |p|
            return !p.user.reviews.find_by_reviewer_id(current_user.id)
        end
    end
    return false
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2013-05-08
    • 1970-01-01
    相关资源
    最近更新 更多