如何在Rails中输出到网站而不是控制台进行调试?

时间:2011-08-10 04:57:57

标签: ruby-on-rails ruby debugging

这个标题几乎解释了一切。 我想使用像

这样的东西
p something

能够在网站上看到输出,只是为了调试。

2 个答案:

答案 0 :(得分:6)

我怀疑你是来自PHP,因为这是一个非常PHP的东西。标准输出不会发送到Rails中的浏览器,PHP开发人员认为这是理所当然的。

如果你想在浏览器中看到某些东西,你需要渲染它。

从视图中,您可以使用debug帮助程序“vardump”一个值:

<%= debug something %>

通过控制器,您可以使用render :inline => p(something)render :inline => something.inspect快速查看变量的值。确保您事后return或以其他方式阻止自己进行第二次render来电。

您应该使用tail日志文件,并使用Rails logger

答案 1 :(得分:3)

我建议捎带Rails flash 地图。在控制器中,使用以下内容:

 flash[:log] = "<li>Log: #{log_info}</li>"

然后在您的视图中(可能在您的布局中)使用:

 <% if !flash[:log].blank? && RAILS_ENV != 'production' %>
   <ul class="logs">
     <%= flash[:log] %>
   </ul>
 <% end %>

应该把它放在你的页面上!

您还可以在 ApplicationController

中添加以下内容
 def log(msg)
   flash[:log] ||= ""
   flash[:log] += "<li>#{Time.new.to_s} - #{msg}</li>"
 end

然后只需从任何控制器调用:

 log("Hi stackoverflow.")

或者从任何观点来看:

 @controller.log("Hi there, you!")