0

Я создаю блог в Rails и хочу добавлять изображения к сообщениям.Как сохранить изображение для записи в блоге в Rails?

Я в основном пишу HTML в текстовую область и сохраняю ее в базе данных. Затем я печатаю содержимое сообщения с @post.content на моей странице показа.

Как правило, вы можете использовать <%= image_tag 'mypic.jpg %> для визуализации динамического URL-адреса изображения, но поскольку он сохраняется в виде строки в базе данных, в этом случае это не работает.

Как сохранить тег изображения в базе данных?

Как справиться с этой проблемой, как cms или блочные движки и редакторы, такие как CKeditor?

+0

отбоя на этой странице ваш ответ: [Rails 4 - сохранение изображений в базе данных] [1] [1]: http://stackoverflow.com/questions/22247582/ rails-4-save-images-in-database – Zakaria

ответ

1

По умолчанию рельсы будут избегать HTML-тегов в строке. Чтобы напечатать строку содержимого сообщения в формате HTML, вы можете использовать метод raw(). Вы также можете использовать html_safe. Сырье обычно предпочтительнее, потому что оно не будет создавать исключение, если значение, переданное ему, равно нулю.

<%= raw @post.content %> или <%= @post.content.html_safe %>

Имейте в виде, вы должны использовать только эти методы на строках, которые вы знаете, являются безопасными от межсайтовых сценариев XXS. Если ваш сайт принимает вход пользователя, это может быть уязвимость безопасности.

CKEditor работает с файловыми камнями, такими как Carrierwave или Dragonfly. Для реализации CKEditor с загрузкой img требуется новая таблица базы данных, которая будет сохранять изображения на вашем сервере при загрузке через текстовый редактор. Путь к изображению сохраняется в строке Post в теге <img>. CKEditor также создает набор маршрутов для обработки путей для загруженных изображений.

+0

Это не работает, потому что теперь '<% = image_tag" mypic.jpg "%> печатается вместо показа изображения – crispychicken

+0

Правильно, встроенный код рубина будет напечатан, когда он находится в string, даже если вы используете html_safe или raw. Вам нужно будет использовать стандартный тег html img для отображения вашего изображения. Для создания этого с нуля потребуется другая модель для ваших изображений, тогда вам нужно будет сопоставить их пути к каждому тегу img в содержимом Post. Или вы можете использовать камень CKEditor, чтобы сделать это за вас. – JeffD23

Смежные вопросы