在上图中,最后一行被截断了,我们来看一下完整的信息:
Missing template articles/new, application/new with {locale:[:en], formats:[:html], handlers:[:erb, :builder, :coffee]}. Searched in: * "/path/to/blog/app/views"
|
这行信息还挺长,我们来看一下到底是什么意思。
第一部分说明找不到哪个模板,这里,丢失的是 articles/new
模板。Rails 首先会寻找这个模板,如果找不到,再找名为 application/new
的模板。之所以这么找,是因为 ArticlesController
继承自 ApplicationController
。
后面一部分是个 Hash。:locale
表示要找哪国语言模板,默认是英语("en"
)。:format
表示响应使用的模板格式,默认为 :html
,所以 Rails 要寻找一个 HTML 模板。:handlers
表示用来处理模板的程序,HTML 模板一般使用 :erb
,XML 模板使用 :builder
,:coffee
用来把 CoffeeScript 转换成 JavaScript。
最后一部分说明 Rails 在哪里寻找模板。在这个简单的程序里,模板都存放在一个地方,复杂的程序可能存放在多个位置。
让这个程序正常运行,最简单的一种模板是 app/views/articles/new.html.erb
。模板文件的扩展名是关键所在:第一个扩展名是模板的类型,第二个扩展名是模板的处理程序。Rails 会尝试在 app/views
文件夹中寻找名为 articles/new
的模板。这个模板的类型只能是 html
,处理程序可以是 erb
、builder
或 coffee
。因为我们要编写一个 HTML 表单,所以使用 erb
。所以这个模板文件应该命名为 articles/new.html.erb
,还要放在 app/views
文件夹中。
新建文件 app/views/articles/new.html.erb
,写入如下代码:
<
h1
>New Article</
h1
>
|
再次刷新 http://localhost:3000/articles/new,可以看到页面中显示了一个标头。现在路由、控制器、动作和视图都能正常运行了。接下来要编写新建文章的表单了。