Как преобразовать массив в строку в Rails - PullRequest
0 голосов
/ 17 октября 2018

Я хочу отобразить изображение base64.

Ниже я покажу, как далеко я ушел.images_base64 определяется следующим образом:

def images_base64(images)
  images.map {|image| image.image}
end

, и если я помещаю его в абзац и показываю его, я получаю это:

["iVBSUhEUAA+gAAA0CAA...a long string"]

Я использую его так:

=image_tag 'data:image/png;base64, '+images_base64(@document.meta.images), width: '450px'

Я получаю сообщение об ошибке: No implicit conversion of Array into String.Похоже, я не могу преобразовать возвращенный массив в строку.

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

Звучит так, как будто вам нужно циклически просматривать изображения и отображать их, например:

- images_base64(@document.meta.images).each do |image|
  = image_tag "data:image/png;base64, #{image}", width: '450px'

Это предполагает, что «длинная строка», на которую вы ссылаетесь, это то, что вы хотели бы добавить 'data:image/png;base64,.

Это создаст тег изображения для каждого элемента в images_base64(@document.meta.images), который, как представляется, всего один в вашем примере.

Надеюсь, это поможет - дайте мне знать, если вылюбые вопросы.

0 голосов
/ 25 октября 2018

Хороший ответ уже был предоставлен и принят, однако давайте объясним, почему ошибка фактически отбросила вас, и вопрос в том виде, в котором он был задан, на самом деле не был проблемой, которую вы пытались решить.

"No implicit conversion of Array into String"

Вы пытаетесь визуализировать массив внутри представления, который должен заканчиваться строкой, потому что HAML отображается в строке HTML, которая в конечном итоге читается браузером.Поэтому простой ответ заключается в том, что при попытке отобразить элементы внутри массива в шаблоне представления rails вы должны ITERATE по массиву с блоком .each в ruby ​​и убедиться, что любые данные ruby, возвращаемые в этом цикле, могут быть оценены какстрока.

0 голосов
/ 17 октября 2018

Карта будет возвращать массив, поэтому вы захотите проиндексировать этот массив.Так как он обрабатывает несколько изображений base64, вы можете запустить цикл, чтобы отобразить каждую фотографию.

...