Итак, я использую Sinatra и Datamapper, чтобы создать свою собственную CMS / блог для сайта моего портфолио (http://erickel.ly). Все шло хорошо, пока я не пошел писать свой первый настоящий пост, и мне нужно было отобразить какой-то код. Мое первое предположение заключалось в том, чтобы просто обернуть исходный код кодом и предварительными тегами, когда я вставил его в текстовое поле, которое используется для ввода содержимого для каждого из сообщений. Он работает нормально, но каждая строка после первой начинается с тонны лишних пробелов, которым не место.
Вот пост-класс:
class Post
include DataMapper::Resource
property :id, Serial
property :title, String
property :slug, String
property :body, Text
property :created_at, DateTime
property :updated_at, DateTime
end
и вот текстовое поле формы для содержания сообщения:
%label(for="body") Body:
%textarea(name="body" rows="10" cols="40")
= @post.body
Вот что я ввожу в текстовое поле:
<code>
<pre>class Link
include DataMapper::Resource
property :long_url, String, :length => 1024, :format => :url
property :short_url, String, :key => true
property :created_at, DateTime
def self.gen_short_url
# Create an Array of possible characters
chars = ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a
tmp = chars[rand(62)] + chars[rand(62)] + chars[rand(62)]
while Link.get(tmp)
puts "Tried " + tmp
tmp = chars[rand(62)] + chars[rand(62)] + chars[rand(62)]
puts "tmp is now " + tmp
end
tmp
end
end</pre>
</code>
После отправки формы данные из текстового поля сохраняются, но с дополнительными пробелами. Когда я возвращаюсь на страницу редактирования, где отображается текущее значение «тела» сообщения, отображается следующее:
<code>
<pre>class Link
include DataMapper::Resource
property :long_url, String, :length => 1024, :format => :url
property :short_url, String, :key => true
property :created_at, DateTime
def self.gen_short_url
# Create an Array of possible characters
chars = ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a
tmp = chars[rand(62)] + chars[rand(62)] + chars[rand(62)]
while Link.get(tmp)
puts "Tried " + tmp
tmp = chars[rand(62)] + chars[rand(62)] + chars[rand(62)]
puts "tmp is now " + tmp
end
tmp
end
end</pre>
</code>
Если я снова отправлю форму с этим значением, в начало каждой строки будет добавлено еще больше дополнительных пробелов. Я не знаю, как это предотвратить, но меня это действительно сбивает. Любая помощь будет оценена по достоинству!
-Эрик