Ruby on rails 什么';当Ruby显示这样的内容时会发生什么:#<;角色:0x11157b630>;?
我记得第一次看Ruby视频时遇到过这个问题,但我再也找不到了。当Ruby显示如下内容时: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的操作。
#<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)。