当Ruby显示如下内容时会发生什么:#<role:0x11157b630>?</role:0x11157b630>

时间:2010-10-04 20:58:36

标签: ruby-on-rails ruby

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

#<Role:0x11157b630>  

,发生了什么事?

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

#<Role:0x11157b630>.

知道我该怎么做吗?

干杯!

5 个答案:

答案 0 :(得分:5)

您所看到的只是您所拥有的实例的代表。假设您在课程title上有Role属性,您可以代替logger.debug @role执行logger.debug @role.title之类的操作。如果您只想执行logger.debug @role打印更有用的内容,请在to_s上定义Role方法。

答案 1 :(得分:2)

附加检查方法应该显示更多细节。

@role.inspect

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

当我开始使用rails时,有时我会做一些简单的错误:

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

我会在帖子列表中得到那些奇怪的输出。

例如:

#<Post:0x11157b630>#<Post:0x11157b630>#<Post:0x11157b630>

原来我在循环之前不小心把“=”放在那里。

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

答案 4 :(得分:0)

根据The Secret of Object#to_s#<Role:0x11157b630>中的数字是十六进制对象object_id的两倍。