web-dev-qa-db-fra.com

Rails: le rendu ne fonctionne pas, obtenez toujours `Le modèle est manquant`

J'apprends actuellement les guides Rails. J'ai franchi les marches mais j'ai quand même rencontré une erreur.

Ma version de Ruby est Ruby 2.1.1p76 et la version de Rails est 4.0.4.

En tant que guide dirigé, j'ai créé un Article Controller.

class ArticlesController < ApplicationController
  def new
  end

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

end

Je devrais obtenir {"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 connexes:

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 faisant référence à ce problème .

25
Hao Tan

Dans la méthode render, l'option plain 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 modèle nommé articles/create puisque vous êtes dans l'action ArticlesController#create. De toute évidence, le modèle n'existe pas et vous obtenez l'erreur Template is missing.

Reportez-vous à la discussion à ce sujet surGithub: Introduisez render :plain et render :html, transformez render :body en alias en render :text

Maintenant, pour utiliser la syntaxe mentionnée ci-dessous, vous devez passer à Rails 4.1

render plain: params[:article].inspect

Avec votre version actuelle de Rails 4.0.4, vous pouvez choisir:

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

Si vous voulez voir les informations textuelles de params [: article] sur votre page, vous pouvez utiliser render text

essaye ça

class ArticlesController < ApplicationController
  def new
  end

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

Tu auras

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

Vous n'avez pas besoin de modèle signifie que vous ne pouvez utiliser aucun rendu: true

Essayez comme ça:

class ArticlesController < ApplicationController
 def new
 end

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

S'il vous plaît se référer ce lien cliquez ici

0
Jenorish