.find () возвращает хеш-символы! - PullRequest
0 голосов
/ 31 марта 2011

У меня есть это в одном из моих /views/ файлов:

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

Результат - модель.Это хорошо работает в консоли, но возвращает ['#,'#] в представлении.Он признал, что у меня есть два результата, но его результаты не отображаются.Есть идеи почему?

Ответы [ 4 ]

6 голосов
/ 31 марта 2011

Возвращается не хеш, это конкатенированное строковое представление, которое вы видите.

<%= %> совпадает с puts в консоли. Пример:

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

Если вы хотите увидеть все атрибуты, которые вам нужно использовать inspect. Пример:

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

Итак:

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

Тем не менее, это не будет хорошим выводом, я думаю, вы делаете это для отладки.

1 голос
/ 31 марта 2011

Используйте или debugger для отладки или logger.debug для вывода в вашем файле development.log.

То, что вы здесь делаете, это Result.find(:all).to_s, потому что <%= %> сделает .to_s

Для правильной отладки:

<% logger.debug "Result.find(:all): #{Result.find(:all).inspect}" %>
1 голос
/ 31 марта 2011

Если вы используете Rails <3 </p>

Причина, по которой вы получаете символ #, заключается в том, что следующий символ - <, ваш браузер интерпретирует это как элемент HTML как таковой, если вы хотите быстро увидетьчто это, оберните это в ах () </p>

то есть

<%= h(Result.find(:all).inspect) %>
1 голос
/ 31 марта 2011

Или, если вы хотите посмотреть каждый из Results, вы просто должны сделать

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