我记得在第一次观看一些Ruby视频时遇到过这个,但我再也找不到了。当Ruby显示如下内容时:
#<Role:0x11157b630>
,发生了什么事?
我有三个角色(管理员/员工/客户),我想展示其中一个,而不是
#<Role:0x11157b630>.
知道我该怎么做吗?
干杯!
答案 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
的两倍。