Отображение атрибута записи в Rails как текст, а не как SVG - PullRequest
0 голосов
/ 11 июля 2019

Приложение Rails 5 определено в /config/initializers/mime_types.rb

Mime::Type.register "image/svg+xml", :svg

, а маршруты содержат вызов к svg

resources :markeradhocs do
  member do
    get   :svg,  format: :svg
  end
end

действию контроллера, состояния

def svg
  respond_to do |format|
    format.svg { render inline: svg}
  end
end

пока что есть пара ловушек.

1 - внутри коллекции, svg_markeradhoc_path(content.markeradhoc) рендеринг - текстовый

/markeradhocs/2/svg

и 2 вызов объекта через действие контроллера localhost:3000/markeradhocs/2/svg возвращает ошибку

ActionController::UnknownFormat in MarkeradhocsController#svg 

для блока response_to действия svg.

Как SVG может визуализировать inline?

1 Ответ

1 голос
/ 11 июля 2019

Попробуйте с

def svg
  svg = 'svg here'
  respond_to do |format|
    format.svg { render inline: svg}
  end
end

Обязательно включите xml namespace (xmlns) в тег svg, в противном случае браузеры просто отображают содержимое как XML

и обновление

svg_markeradhoc_path(content.markeradhoc)

с

image_tag(svg_markeradhoc_path(content.markeradhoc, format: :svg))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...