Ruby on rails 什么';当Ruby显示这样的内容时会发生什么:#<;角色:0x11157b630>;?

Ruby on rails 什么';当Ruby显示这样的内容时会发生什么:#<;角色:0x11157b630>;?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我记得第一次看Ruby视频时遇到过这个问题,但我再也找不到了。当Ruby显示如下内容时: #<Role:0x11157b630> # 发生了什么事 我有三个角色(管理员/员工/客户),我想展示其中一个,而不是一个 #<Role:0x11157b630>. #。 你知道我怎么做吗 干杯 您看到的只是您拥有的实例的一个表示。假设类Role上有title属性,则可以代替logger.debug@Role执行类似于logger.debug@Role.title的操作。

我记得第一次看Ruby视频时遇到过这个问题,但我再也找不到了。当Ruby显示如下内容时:

#<Role:0x11157b630>  
#
发生了什么事

我有三个角色(管理员/员工/客户),我想展示其中一个,而不是一个

#<Role:0x11157b630>.
#。
你知道我怎么做吗


干杯

您看到的只是您拥有的实例的一个表示。假设类
Role
上有
title
属性,则可以代替
logger.debug@Role
执行类似于
logger.debug@Role.title
的操作。如果只想执行
logger.debug@role
打印出更有用的内容,请在
role
上定义一个
to
方法,附加一个inspect方法应该会显示更多细节

@role.inspect

当我开始使用rails时,我有时会遇到一些奇怪的bug,比如:

<% @posts.each do |post| %>
  ....
<% end %> 

....
我会把那些奇怪的输出放在帖子列表下面

例如:

#<Post:0x11157b630>#<Post:0x11157b630>#<Post:0x11157b630>
###
结果我不小心在循环之前放了一个“=”

<%= @posts.each do |post| %>
      ....
<% end %> 

....

这就是
to\s
的默认实现;类名后跟内存位置。如果愿意,您可以定义自己的版本:

def to_s
   "My name is #{@name}"
end

根据,在hexidecimal中,
#
中的数字是对象的
对象id
的两倍。

角色模型中的列名是什么?输出此消息的代码行是什么样子的?表“roles”包含字段“id”和“name”。输出这个的代码是。在user.rb中,我有def role roles.first end def role=(role_id)self.roles=[role.find(role_id)]end谢谢!用inspect我得到[#]和[#]和[#]。当我执行类似user.roles.name的操作时,我会得到“Role”。嘿,你不能执行user.roles.name,因为user.roles可能会返回一个数组。请尝试user.roles.first.name,或者如果需要所有这些,请使用user.roles.collect(&:name)。