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 :plain
和render :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服务请求时,呈现纯文本最有用。