rails视图中的p和puts之间的差异

时间:2010-11-30 21:04:17

标签: ruby-on-rails ruby

我是Rails的新手。我创建了一个控制器和一个动作。在我使用的相应视图中  <%= puts“asd”%>一次和<%= p“asd”%>另一次。

如果id将其显示在控制台上,并且在p的情况下,它将呈现为HTML。可能的原因是什么?

3 个答案:

答案 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没有。

pputs something.inspect的较短版本,对于调试非常有用,而且就此而言。要将字符串输出到控制台,最好使用puts

答案 2 :(得分:1)

与问题不完全相关,但我提倡使用awesome_print(“ap”与“p”)

https://github.com/michaeldv/awesome_print

它在视图中作为Rails插件提供支持,但我主要将它用于控制台。