.find()返回哈希符号!

时间:2011-03-31 15:59:59

标签: ruby-on-rails ruby hash views find

我在我的/views/个文件中有这个:

<%= Result.find(:all) %>

结果是一个模型。这在控制台中工作正常但它在视图中返回['#,'#]。它已经认识到我有两个结果,但它没有显示结果。有什么想法吗?

4 个答案:

答案 0 :(得分:6)

它不是正在返回的哈希,它是您看到的串联字符串表示。

<%= %>与控制台中的puts相同。例如:

> puts User.all
#<User:0x00000102f98550>
...

如果您想查看使用inspect所需的所有属性。例如:

> puts User.all.inspect
[#<User id: 2, email: "ga...

所以:

<%= Result.find(:all).inspect %>

虽然仍然不是很好的输出,但我猜你这样做是为了调试。

答案 1 :(得分:1)

或者,如果你想观看你应该做的所有Results中的每一个

<% Result.find(:all) do |result| %>
  <%= result.your_result_attribute %>
<% end %>

答案 2 :(得分:1)

假设您正在使用Rails&lt; 3

你获得#的原因是因为下一个字符是&lt;,你的浏览器是 如果你想快速查看它是什么,将其解释为HTML元素,将其包装在h()

<%= h(Result.find(:all).inspect) %>

答案 3 :(得分:1)

使用或debugger调试或logger.debug将其输出到development.log中。

您在此处所做的是Result.find(:all).to_s,因为<%= %>会执行.to_s

要正确调试:

<% logger.debug "Result.find(:all): #{Result.find(:all).inspect}" %>