如何制作新行或在数组中中断?

时间:2019-01-25 14:53:25

标签: javascript ruby-on-rails

我有一个弹出窗口,我希望每个项目之间都有一个休息时间 在内容数据中。

 %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 :(得分:0)

\n在HTML中未呈现为换行符。请改用<br />标签:

 #{folder.doc.map{ |file_id| File.find(file_id).name}.join("<br />").html_safe}",rel: "popover", title: "title: 

答案 1 :(得分:0)

如果正在浏览器中显示该字符,则\n将仅在代码中放入换行符 。 HTML换行符 tag <br />。但是,如果不了解您正在使用的一般上下文,那么很难为您提供良好的建议。

通常,如果我要列出事物,那么我会将整个列表包装在一个<ul>标记中,而每个列表项都包装在一个<li>中……或者也许每个都应该包裹在<div>中。

与大多数编程语言一样,关于HTML的事情是,有许多方法可以执行任意操作,但是取决于整体情况,有更好的方法也可以有更糟的方法

答案 2 :(得分:0)

添加换行符将不起作用,因为HTML将忽略任何空格/换行符,以使字符串尽可能最佳地连续。因此,您必须使用<br/>在HTML中添加明确的换行符。但是,现在,为了安全起见,除非您明确指示Rails 这样做,否则为了安全起见,所有字符串都将被html转义。

因此,在您的情况下,您想要构建文件列表,声称它是安全的,然后将其设置为内容。

- 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:"}

其次,因为您正在使用引导程序来渲染弹出窗口,所以您还必须指示引导程序弹出窗口将data-content解释为html,并且不应对其进行转义(通过设置data-html属性)。

答案 3 :(得分:0)

对于这种情况,我建议使用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

查看

%i.fa.fa-folder.item{"data-content" => render_data_content(folder) ,rel: "popover", title: "title:"}