我目前正在学习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:
是引用this issue的Rails 4.1.0
中引入的新方法。
答案 0 :(得分:46)
在render
方法中,plain
中添加了Rails 4.1
选项,您正在使用Rails 4.0.4
。因此,rails忽略了此选项,并开始在articles/create
操作中查找名为ArticlesController#create
的模板。显然,模板不存在,因此您收到错误Template is missing
。
请参阅 Github: Introduce render :plain
and render :html
, make render :body
as an alias to render :text
现在,要使用下面提到的语法,您需要升级到Rails 4.1
:
render plain: params[:article].inspect
使用当前版本的Rails 4.0.4
,您可以选择:
render text: params[:article].inspect
答案 1 :(得分:3)
如果您想在页面上看到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."}
# i.e. your params(whatever params hash contains)
答案 2 :(得分:-1)
您不需要模板意味着您可以使用任何渲染:true
试试这样:
class ArticlesController < ApplicationController
def new
end
def create
params[:article].inspect
render nothing: true
end
end
请参阅此链接click here
答案 3 :(得分:-1)
更改Gemfile中的Rails版本:
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.6'
然后运行:
bundle install
确保您的Rails版本现在是&gt; 4.1
答案 4 :(得分:-2)
您可能需要阅读following documentation。
当您回复Ajax或者Ajax时,渲染纯文本非常有用 Web服务请求期望不正确的东西 HTML。