2014-07-18 13 views
7

Ich möchte eine ERB-Vorlage in Rails im Nur-Text-Format rendern. Im Idealfall würde ich in der Lage sein, so etwas zu tun:Rails Nur-Text-Vorlage

app/views/test/test.txt.erb

Test 
<%= @test %> 

Als ich versuchte, Rails beschwerte sich mit dem folgenden Fehler:

ActionView::MissingTemplate (Missing template test/test, application/test with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee]}. Searched in: 
    * "/Users/landonschropp/Development/test/app/views" 
): 
+0

Warum ist Ihr Dateiname 'test.txt.erb'? ist nicht das sollte 'test.html.erb' sein – Pavan

+0

Ich möchte es als einfachen Text, nicht HTML rendern. – LandonSchropp

+0

Ich habe verstanden, dass Sie es als einen einfachen Text rendern wollen, aber es gibt kein Format namens 'txt', so ist der Fehler. – Pavan

Antwort

8

Der einfachste Weg ist in Ihrer Aktion:

render '/test/test.text.erb', layout: false, content_type: 'text/plain' 
+0

Das hat den Trick gemacht! Danke für die Hilfe. – LandonSchropp

0

Wenn Sie wollen einfach nur die Datei machen selbst verwenden:

render "/test/test.text.erb" 

Es ist wichtig, das "/" am Anfang zu verwenden, da Rails erkennt, dass es sich um eine Datei handelt. Natürlich wird es nicht die "<" oder ">" von HTML-Tags entkommen.

Oder wenn es aus einer Datei nicht genau Klartext ist, können Sie es inline:

render plain: "OK" 
+0

Danke für die Antwort, aber diese Antwort fehlte der MIME-Typ. – LandonSchropp

2

Ok so, wie ich ist gefunden

Mime::Type.register 'text/plain', :txt 

environment.rb hinzufügen

Wenn Sie benötigen, können Sie Standardwerte hinzufügen: {format: 'txt'} Option zur Routen-Definition

Rails.application.routes.draw do 
    root 'pages#home' 

    get 'test', to: 'pages#test', defaults: {format: 'txt'} 
end 
+0

Danke für die Antwort, aber das schien nicht von mir zu funktionieren. Ich habe den gleichen Fehler wie oben erhalten. – LandonSchropp

0

einfach mit ...

render 'test', layout: false, formats: [:text] 

... funktioniert im Allgemeinen, vorausgesetzt, Sie haben eine Vorlage test.text.erb in einer der normalerweise benannt gesuchte Orte unter /app/views.