Как сделать новую строку или разбить массив? - PullRequest
0 голосов
/ 25 января 2019

У меня есть поповер, и я хочу сделать перерыв между каждым пунктом в контент-данных.

 %i.fa.fa-folder.item{"data-content" => "#{folder.doc.map{ |file_id| File.find(file_id).name}.join{"<br />"}.html_safe}",rel: "popover", title: "title:"}

Я добавил "\ n" в объединение, но оно не работает. Есть ли у вас какие-либо идеи, где я должен поставить "\ n" в коде?

Ответы [ 4 ]

0 голосов
/ 25 января 2019

Для этого случая я бы рекомендовал использовать помощник

Helper

module MyHelper
  def render_data_content(folder)
    folder.doc.map do |file_id| 
      File.find(file_id).name
    end.join('<br/>').html_safe
  end
end

View

%i.fa.fa-folder.item{"data-content" => render_data_content(folder) ,rel: "popover", title: "title:"}
0 голосов
/ 25 января 2019

Если это отображается в браузере, то \n поместит только символ новой строки в коде . Новая строка HTML tag равна <br />. Однако, не зная больше об общем контексте, который вы используете, трудно дать вам хороший совет.

Обычно, если я составляю список вещей, я бы обернул весь список, скажем, в тег <ul>, а каждый элемент списка в <li> ... Или, возможно, каждый из них должен быть заключен в <div>.

Особенность HTML, как и большинства языков программирования, заключается в том, что есть много способов сделать произвольную вещь, но есть лучшие или худшие, в зависимости от общей картины

0 голосов
/ 25 января 2019

Добавление новой строки не будет работать, так как HTML будет игнорировать любые пробелы / новые строки в строке наилучшего формата, насколько это возможно, непрерывно. Поэтому вы должны использовать <br/>, чтобы добавить явный разрыв строки в HTML. Однако теперь в рельсах для безопасности любая строка будет html-escape-, если вы явно не указали рельсам , а не .

Итак, в вашем случае вы хотите создать список файлов, заявить, что он безопасен, а затем установить его как контент. Что-то вроде

- file_list = folder.doc.map{|file_id| File.find(file_id).name}.join('<br/>').html_safe
%i.fa.fa-folder.item{data: {content: file_list, html: "true", rel: "popover", title: "title:"}

Во-вторых, поскольку вы используете bootstrap для рендеринга всплывающего окна, вам также нужно будет указать загрузчику poptrap, что data-content интерпретируется как html и не должен быть экранирован (путем установки атрибута data-html).

0 голосов
/ 25 января 2019

\n не отображается как новая строка в HTML.Вместо этого используйте тег <br />:

 #{folder.doc.map{ |file_id| File.find(file_id).name}.join("<br />").html_safe}",rel: "popover", title: "title: 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...