2014-01-15 20 views
6

Wie rendert man Datei als Plain/Text in Rails (ohne HTML zu rendern)?Ruby on Rails: Wie rendert man Datei als reinen Text (ohne HTML)

Ich habe versucht:

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

und

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

auch beide

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

Aber es immer noch einige HTML-Datei auf die Antwort.

Ich Schienen 3.2.14 und Rubin 1.9.3

Vielen Dank im Voraus mit.

EDIT 1:

Dumme mir, das tatsächlich funktioniert:

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

Ich wurde das Element mit Google Chrome Inspektion, also gibt es ein HTML-Tag erscheint. Aber wenn ich die Quelle sehe, gibt es kein HTML-Tag.

Die Datei I ist ein Maß Datei ohne Erweiterung zu machen versuchte, ist es ein Tab Separated Value I als Parameter in d3.tsv() verwenden (D3.js)

Danke allen für Ihre Bemühungen. : D

EDIT 2:

In Edit 1, überprüfte ich die Antwort und es ist wahr, dass es nicht mit einem HTML-Tag kommt. Aber es als Parameter in d3.tsv() (D3.js) zu verwenden funktioniert offenbar nicht. Froh, ich versuchte the answer von JetAbe und es funktioniert! Also habe ich JetAbes Antwort angenommen.

+0

was wird gerendert? 'layout: false' wird keine Layout-Bedeutung haben, was in dieser Datei ist, was Sie bekommen. – sevenseacat

+0

Schauen Sie hier http://StackOverflow.com/Questions/12591566/rails-3-Render-plaintext-page-using-view – Abs

+0

statt Ihre Frage zu bearbeiten, beantworten Sie es und markieren Sie als accepted.so, dass andere wissen, dass es gelöst und verschwende keine Zeit. –

Antwort

4

Ich denke, weil Ihre env 3 Schienen können Sie versuchen, diese

send_file path_to_file 
7

Rails 4.1 ist jetzt die folgende API für die render Verfahren aussetzt:

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 der Tat

, sie werden be deprecating use of render: text in a future release.

+0

Für zukünftige Suchende: In Rails 4.0.0, um dir Text rendern zu lassen muss schreiben: 'render text:" etwas text "'. : Ebene funktioniert nicht. – 7stud

+1

@ 7stud Das Gegenteil scheint wahr zu sein. "Wir werden die Verwendung von render: text in einer zukünftigen Version ablehnen.Verwenden Sie stattdessen die präziseren Optionen: plain,: html und: body. Verwenden von render: text kann ein Sicherheitsrisiko darstellen, da der Inhalt als text/html gesendet wird. " Siehe: http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#rendering-content-from-string –