Rails: render ne fonctionne pas, get ' Template is missing`
je suis en train d'apprendre les guides des Rails. J'ai traversé les étapes, mais j'ai quand même fait une erreur.
ma version Ruby est ruby 2.1.1p76
et les Rails version est 4.0.4
.
comme le guide l'indique, j'ai créé un Article Controller
.
class ArticlesController < ApplicationController
def new
end
def create
render plain: params[:article].inspect
end
end
je {"title"=>"First article!", "text"=>"This is my first article."}
mais la sortie s'est avérée être
Template is missing
Missing template articles/create, application/create with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}.`
Voici mes itinéraires:
articles GET /articles(.:format) articles#index
POST /articles(.:format) articles#create
mise à Jour: render plain:
est une nouvelle méthode introduite dans Rails 4.1.0
visées ce problème.
5 réponses
Dans le render
méthode plain
l'option a été ajoutée dans Rails 4.1
et vous utilisez Rails 4.0.4
. Donc, rails a ignoré cette option et a commencé à chercher un template nommé articles/create
comme vous êtes dans ArticlesController#create
action. Évidemment, le modèle n'existe pas donc vous obtenez l'erreur Template is missing
.
reportez-vous à la discussion sur ce sujet sur Github: Introduce render :plain
et render :html
, faire render :body
comme alias de render :text
maintenant, pour utiliser le mentionnés ci-dessous syntaxe vous devez mettre à niveau vers Rails 4.1
:
render plain: params[:article].inspect
avec votre version actuelle de Rails 4.0.4
, vous pouvez aller pour:
render text: params[:article].inspect
si vous voulez voir des informations textuelles de params [: article] sur votre page alors vous pouvez utiliser render text
essayez ceci
class ArticlesController < ApplicationController
def new
end
def create
render text: params[:article].inspect
end
end
Vous obtiendrez
{"title"=>"First article!", "text"=>"This is my first article."}
# i.e. your params(whatever params hash contains)
Vous n'avez pas besoin de template signifie que vous pouvez utiliser le rendu nothing: true
Essayez comme ceci:
class ArticlesController < ApplicationController
def new
end
def create
params[:article].inspect
render nothing: true
end
end
Veuillez consulter ce lien cliquez ici
Changer de Rails version dans votre Gemfile:
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.6'
puis courir:
bundle install
assurez-vous que votre version de Rails est maintenant > 4.1
vous pouvez lire à travers le documentation suivante.
le rendu de texte pur est le plus utile lorsque vous répondez à Ajax ou demandes de service web qui attendent autre chose que ce qui est approprié HTML.