在 Rails 数据库列中保留空格/缩进

Preserving whitespace / indentation in Rails database column

我在数据库中存储了伪代码文本块,这些文本块会逐行打印并显示在 HTML 中。

在数据库的文本列中输入的伪代码:

while (counter <= 10) {
  printf("Enter grade: ");
  scanf("%d", &grade);
  total = total + grade;
  counter = counter + 1;
} /* end while */

控制器:

def index
    @code = Code.first // just a filler for the time being
end

索引:

- @code.cont.each_line do |line|
    - i += 1
    .line
        %span= i
        %li.line= line
- i = 0

一路走来的某个地方 Ruby 自动删除所有空格,只给我留下文本。我想知道如何保存它以便

这个:

while (counter <= 10) {
  printf("Enter grade: ");
  scanf("%d", &grade);
  total = total + grade;
  counter = counter + 1;
} /* end while */

不是这样出来的:

while (counter <= 
printf("Enter grade: ");
scanf("%d", &grade);
total = total + grade;
counter = counter + 1;
} /* end while */

我很确定你的 space 字符在那里,但由于 HTML 处理白色 space 的方式你看不到它们。通过将文本放入变量并使用简单的 puts my_chunk_of_text 将其转储到控制台来仔细检查这一点。如果 space 存在(根据您发布的代码,我不明白为什么它们不存在),您有几个选择:

1) 用 <pre> 标签夹住显示的文本,这会呈现预格式化的文本。你会想要在你的视图中这样做,就像这样:

<pre><%= @my_chunk_of_text %></pre>

2) 以 HTML 格式保存文本,在您希望 space 出现的任何地方使用不间断的 spaces (&nbsp;),并且 <br> 需要换行的地方。可以使用 html_safe 助手在您的视图中呈现此代码。

<%= @my_chunk_of_text.html_safe %>