wake-up-neo.com

Rails: Rendern funktioniert nicht, immer noch `Template is missing '

Ich lerne gerade Rails Guides. Ich ging die Schritte durch, stieß aber immer noch auf einen Fehler.

Meine Ruby-Version ist Ruby 2.1.1p76 und die Rails-Version ist 4.0.4.

Wie in der Anleitung angegeben, habe ich einen Article Controller erstellt.

class ArticlesController < ApplicationController
  def new
  end

  def create
    render plain: params[:article].inspect
  end

end

Ich sollte {"title"=>"First article!", "text"=>"This is my first article."} bekommen, aber die Ausgabe stellte sich heraus 

Template is missing
Missing template articles/create, application/create with {:locale=>[:en], :formats=>[:html],    :handlers=>[:erb, :builder, :raw, :Ruby, :jbuilder, :coffee]}.`

Hier sind meine verwandten Routen:

articles GET    /articles(.:format)          articles#index
         POST   /articles(.:format)          articles#create

Update: render plain: ist eine neue Methode, die in Rails 4.1.0 auf dieses Problem verweist.

25
Hao Tan

In der render-Methode wurde die plain-Option in Rails 4.1 hinzugefügt, und Sie verwenden Rails 4.0.4. Daher hat Rails diese Option ignoriert und nach einer Vorlage mit dem Namen articles/create gesucht, während Sie sich in der Aktion ArticlesController#create befinden. Offensichtlich ist die Vorlage nicht vorhanden, daher wird der Fehler Template is missing angezeigt.

Weitere Informationen finden Sie in der Diskussion zu diesem Thema unterGithub: Führen Sie render :plain und render :html ein, und stellen Sie render :body als Alias ​​für render :textein.

Für die Verwendung der unten genannten Syntax müssten Sie ein Upgrade auf Rails 4.1 durchführen: 

render plain: params[:article].inspect

Mit Ihrer aktuellen Version von Rails 4.0.4 können Sie Folgendes erreichen:

render text: params[:article].inspect
45
Kirti Thorat

Wenn Sie Textinformationen zu params [: article] auf Ihrer Seite anzeigen möchten, können Sie render text verwenden.

versuche dies

class ArticlesController < ApplicationController
  def new
  end

  def create
    render text: params[:article].inspect
  end    
end

Sie erhalten

{"title"=>"First article!", "text"=>"This is my first article."}
# i.e. your params(whatever params hash contains)
3

Sie brauchen keine Vorlage, dh Sie können nichts verwenden: true

Versuchen Sie es so:

class ArticlesController < ApplicationController
 def new
 end

 def create
  params[:article].inspect
  render nothing: true
 end
end

Bitte beziehen Sie sich auf diesen Link klicken Sie hier

0
Jenorish