Rails:渲染不起作用,仍然得到`模板丢失’

我目前正在学习Rails指南。 我经历了这些步骤,但仍然遇到了一个错误。

我的Ruby版本是ruby 2.1.1p76 ,Rails版本是4.0.4

作为指导,我创建了一个Article Controller

 class ArticlesController < ApplicationController def new end def create render plain: params[:article].inspect end end 

我应该得到{"title"=>"First article!", "text"=>"This is my first article."}但输出结果是

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

这是我的相关路线:

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

更新: render plain:是一个在Rails 4.1.0引入的新方法,引用了这个问题 。

render方法中,在Rails 4.1中添加了plain选项,并且您使用的是Rails 4.0.4 。 因此,rails忽略了此选项,并开始在ArticlesController#create action中查找名为articles/create的模板。 显然,模板不存在,因此您得到错误Template is missing

请参阅Github上关于此主题的讨论:介绍render :plainrender :html ,make render :body作为render :text的别名render :text

现在,要使用下面提到的语法,您需要升级到Rails 4.1

 render plain: params[:article].inspect 

使用当前版本的Rails 4.0.4 ,您可以选择:

 render text: params[:article].inspect 

如果您想在页面上看到params [:article]的文本信息,那么您可以使用render text

试试这个

 class ArticlesController < ApplicationController def new end def create render text: params[:article].inspect end end 

你会得到

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

您不需要模板意味着您可以使用任何渲染:true

试试这样:

 class ArticlesController < ApplicationController def new end def create params[:article].inspect render nothing: true end end 

请参阅此链接点击此处

更改Gemfile中的Rails版本:

 # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.1.6' 

然后运行:

 bundle install 

确保您的Rails版本现在> 4.1

您可能需要阅读以下文档 。

当您响应期望除正确HTML之外的其他内容的Ajax或Web服务请求时,呈现纯文本最有用。