символы новой строки, запутывающие теги <pre>(Ruby on Rails) - PullRequest
1 голос
/ 04 апреля 2011

Я занимаюсь разработкой блога, и некоторые действительно раздражающие вещи происходят с символами новой строки (\ n).Все работает нормально, за исключением случаев, когда я делаю пост, содержащий предварительные теги, символы новой строки облажают отступ.

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

<pre>
  <code>
    some code some code
    more code more code
  

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

Я понятия не имею, почему это происходит, ноесли я сделаю что-то вроде

string.gsub!(/\n/, "<br />")

Отступ будет удален, так что я знаю, что это связано с \ n.Но тогда моя проблема заключается в том, что слишком много разрывов строк, и формат тогда не работает.

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

def remove_newlines(string)
   regexp = /<pre>\s?(.*?)\s?<\/pre>/
   code = regexp.match(string)
   code[1].gsub!(/\n/, "<br />")
end

Но я не могу заставить это работать правильно.

Кто-нибудь знает, как я могу избавиться от этой странной проблемы с отступами или каких-либо указателей на это?

Спасибо!

1 Ответ

5 голосов
/ 04 апреля 2011

Похоже, ваш движок шаблонов автоматически делает отступ для тегов <pre>.Браузеры отображают пробелы внутри тегов <pre> как есть (и так должно быть, в соответствии со спецификациями).Это означает, что пробел в начале каждой строки внутри <pre>, добавляемый механизмом шаблонов, чтобы сделать источник HTML более читабельным, также отображается на реальной странице, в отличие от пробелов в большинстве других мест в источнике HTML.

Таким образом, решение зависит от вашего языка шаблонов.

Если вы используете HAML:

FAQ по HAML: как мне остановить Haml, чтобы он отступал от содержания моего пред итеги textarea?

Надеюсь, это поможет.

...