首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bookmark.id是否应返回nil

bookmark.id是否应返回nil
EN

Stack Overflow用户
提问于 2016-03-14 15:34:02
回答 4查看 49关注 0票数 0

嘿,伙计们,我在给我页面上的书签添加一个喜欢/不喜欢的功能时遇到了问题。

基本上,我有一小段代码存在于我的用户模型中:

代码语言:javascript
复制
   def liked(bookmark)
     likes.where(bookmark_id: bookmark.id).first
   end

但是,当我运行服务器并单击该主题以显示相关的书签时,我不断收到

undefined method `id' for nil:NilClass

我的问题是。首先,这里出了什么问题?其次,bookmark_id和bookmark.id有什么不同?

我很确定书签的id不存在...如果不是..。我该如何添加它?我尝试过通过迁移,但不幸的是,这并没有带来什么好处

EN

回答 4

Stack Overflow用户

发布于 2016-03-14 15:40:36

使用以下代码:

代码语言:javascript
复制
 def liked(bookmark)
  likes.where(bookmark_id: bookmark.id).first if bookmark.present?
 end

由于对象不存在,您将收到id for nil:NilClass错误。例如,bookmark

  • is nil.

  • bookmark_idbookmark的字段名bookmark.id仅当对象存在时才返回bookmark对象的id。
票数 1
EN

Stack Overflow用户

发布于 2016-03-14 15:52:54

bookmark.id会引发一个异常。确保将bookmark实例传递给liked方法且不是nil

票数 0
EN

Stack Overflow用户

发布于 2016-03-14 16:25:03

您需要确保您的bookmark参数不为空。

您可以尝试以下代码

代码语言:javascript
复制
def liked(bookmark)
  likes.where(bookmark_id: bookmark.try(:id)).first
end

或者一个更好的版本

代码语言:javascript
复制
def liked(bookmark)
  likes.find_by(bookmark_id: bookmark.try(:id))
end

上面的代码将返回一个nil对象或第一个like

为了回答第二个问题,bookmark_idLike模型的列名,而bookmark.idbookmark对象上的方法调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35981827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档