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

Hao*_*Tan 25 ruby ruby-on-rails ruby-on-rails-4

我目前正在学习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
Run Code Online (Sandbox Code Playgroud)

我应该得到{"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]}.`
Run Code Online (Sandbox Code Playgroud)

这是我的相关路线:

articles GET    /articles(.:format)          articles#index
         POST   /articles(.:format)          articles#create
Run Code Online (Sandbox Code Playgroud)

更新:引用此问题时render plain:引入的新方法.Rails 4.1.0

Kir*_*rat 46

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

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

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

render plain: params[:article].inspect
Run Code Online (Sandbox Code Playgroud)

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

render text: params[:article].inspect
Run Code Online (Sandbox Code Playgroud)