Rails记录属性呈现为文本,而不是SVG

时间:2019-07-11 10:01:08

标签: ruby-on-rails

/config/initializers/mime_types.rb中定义了Rails 5应用程序

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 

用于svg操作的response_to块。

SVG如何内联渲染?

1 个答案:

答案 0 :(得分:1)

尝试

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))