Ruby on Rails: How to render file as plain text (without any HTML)

梦想与她 提交于 2019-12-21 05:07:12

问题


How do you render file as a plain/text in rails (without rendering any HTML)?

I've tried:

render file: "path/to/file", layout: false

and

render file: "path/to/file", content_type: 'text/plain'

also both

render file: "path/to/file", layout: false, content_type: 'text/plain'

But there still some html on the response.

I'm using rails 3.2.14 and ruby 1.9.3

Thanks in advance.

EDIT 1:

Silly me, this actually works:

render file: "path/to/file", layout: false, content_type: 'text/plain'

I was inspecting the element using google chrome, so there's an html tag appears. But when I see the source, there's no HTML tag.

The file I was trying to render is a custom made file without extension, it is a tab separated value I use as a parameter in d3.tsv() (D3.js)

Thank you all for your efforts. :D

EDIT 2:

In Edit 1, I checked the response and it's true that it doesn't come with any html tag. But using it as parameter in d3.tsv() (D3.js) doesn't work apparently. Glad I tried the answer from JetAbe and it works! So I accepted JetAbe's answer.


回答1:


I think because your env is rails 3 you can try this

send_file path_to_file



回答2:


Rails 4.1 now exposes the following API for the render method:

render :plain will set the content type to text/plain render :html will set the content type to text/html render :body will not set the content type header.

In fact, they'll be deprecating use of render: text in a future release.



来源:https://stackoverflow.com/questions/21129587/ruby-on-rails-how-to-render-file-as-plain-text-without-any-html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!