Отображение области памяти вместо значения в Rails - PullRequest
0 голосов
/ 31 октября 2010

У меня есть блок этого кода в моем помощнике:

if !shop.directions.blank?
     "<ul>".html_safe +
        shop.directions.each do |direction|
          "<li>#{direction.direction}</li>".html_safe
        end +
     "</ul>".html_safe
else
    "No directions available.".html_safe
end +

Показывает ячейку памяти direction.direction как

#<Direction:0xab3c6d0>#<Direction:0xa32c6d0>

вместо значения как

1. Take bus no. 3
2. Take train towards Lydia Ave.

Спасибо.

ОБНОВЛЕНИЕ 1

Теперь я изменил это на:

spot.directions.flatten.map do |direction|
          "<li>".html_safe + direction.direction + "</li>".html_safe
        end

с помощью flatten.map,Но затем он показывает весь код в браузере:

 <li>Take bus no. 3</li><li>Take train towards Lydia Ave.</li>

Да, включая <li><li>

Ответы [ 2 ]

0 голосов
/ 31 октября 2010

Ваш блок, кажется, в порядке, вы проверили, какой объект Direction#direction возвращает?Если он возвращает Direction объект, то это именно то, что вы получите.

Ответ за ваше обновление: Любая объединенная / восстановленная строка теряет свой статус "html safe" и получаетсбежал на выходе.Вы должны вызвать html_safe для получения конечного результата, а внутри блока экранировать рискованные строки вручную с помощью h(risky_part)

0 голосов
/ 31 октября 2010

Похоже, что вы сохраняете объект Direction (у которого нет собственного метода to_s) в direction.direction вместо строки. Попробуйте вывести direction.direction.inspect, чтобы лучше понять, что происходит. Также имейте в виду, что ruby-debug может быть отличным инструментом для отладки, распечатывая значения.

Полагаю, что, не глядя на код, вы могли бы иметь массив массивов объектов направления, таких как [[direction1],[direction2]], а не уплощенный массив, который вы ожидаете [direction1, direction2].

Обновление: Array # map возвращает другой массив - вам нужно создать строку, а не вернуть массив, поэтому рассмотрите возможность явного создания строки или вызова соединения для результирующего массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...