我是Rails的新手。我创建了一个控制器和一个动作。在我使用的相应视图中 <%= puts“asd”%>一次和<%= p“asd”%>另一次。
如果id将其显示在控制台上,并且在p的情况下,它将呈现为HTML。可能的原因是什么?
答案 0 :(得分:11)
puts
调用方法to_s
p
调用方法inspect
class Foo
def to_s
"In #to_s"
end
def inspect
"In #inspect"
def
def
从语义上讲,to_s意味着将对象的表示输出给用户,并检查提示对象的内部属性(有点像python的repr
),但这只是一个约定。
如果您想检查HTML中的 ,请使用<%= debug "something" %>
答案 1 :(得分:3)
我认为你会发现p
方法输出到控制台,但它“呈现为HTML”的原因是因为p
方法返回传入的值,其中puts
没有。
p
是puts something.inspect
的较短版本,对于调试非常有用,而且就此而言。要将字符串输出到控制台,最好使用puts
。
答案 2 :(得分:1)
与问题不完全相关,但我提倡使用awesome_print(“ap”与“p”)
https://github.com/michaeldv/awesome_print
它在视图中作为Rails插件提供支持,但我主要将它用于控制台。