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.

25
demandé sur Kirti Thorat 2014-04-10 10:56:20

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
45
répondu Kirti Thorat 2014-05-03 14:58:14

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)
3
répondu Kalpesh Fulpagare 2014-04-10 07:09:08

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

0
répondu Jenorish 2014-04-10 08:11:51

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

-1
répondu Victor 2015-11-09 21:54:22

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.

-2
répondu Pierre-Louis Gottfrois 2014-04-10 07:03:36