嘿,伙计们,我在给我页面上的书签添加一个喜欢/不喜欢的功能时遇到了问题。
基本上,我有一小段代码存在于我的用户模型中:
def liked(bookmark)
likes.where(bookmark_id: bookmark.id).first
end但是,当我运行服务器并单击该主题以显示相关的书签时,我不断收到
undefined method `id' for nil:NilClass
我的问题是。首先,这里出了什么问题?其次,bookmark_id和bookmark.id有什么不同?
我很确定书签的id不存在...如果不是..。我该如何添加它?我尝试过通过迁移,但不幸的是,这并没有带来什么好处
发布于 2016-03-14 15:40:36
使用以下代码:
def liked(bookmark)
likes.where(bookmark_id: bookmark.id).first if bookmark.present?
end由于对象不存在,您将收到id for nil:NilClass错误。例如,bookmark
bookmark_id是bookmark的字段名bookmark.id仅当对象存在时才返回bookmark对象的id。发布于 2016-03-14 15:52:54
bookmark.id会引发一个异常。确保将bookmark实例传递给liked方法且不是nil
发布于 2016-03-14 16:25:03
您需要确保您的bookmark参数不为空。
您可以尝试以下代码
def liked(bookmark)
likes.where(bookmark_id: bookmark.try(:id)).first
end或者一个更好的版本
def liked(bookmark)
likes.find_by(bookmark_id: bookmark.try(:id))
end上面的代码将返回一个nil对象或第一个like
为了回答第二个问题,bookmark_id是Like模型的列名,而bookmark.id是bookmark对象上的方法调用。
https://stackoverflow.com/questions/35981827
复制相似问题