为什么我从子目录中丢失模板?

时间:2014-04-27 20:23:32

标签: ruby-on-rails ruby

我的views/patients/show.html.slim

中有以下内容
== render 'era/header'

当然,views/patients/era/_header.html.slim存在,但它会丢失模板错误:

ActionView::MissingTemplate at /patients/12345
Missing partial era/header with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :slim, :haml]}. 
Searched in: * "/home/pablo/code/rails/tarjira/app/views"

如果我使用== render 'patients/era/header',则与== render 'era_header'相同(假设我有views/patients/_era_header.html.slim个文件)。后者让我觉得rails搜索实际目录(views/patients),所以我不明白为什么在第一种情况下我必须用patients/作为前缀。

我正在使用Rails 4.0.4。

1 个答案:

答案 0 :(得分:1)

要将部分渲染为视图的一部分,请在视图中使用render方法:

== render 'era_header'

这将在呈现的视图中的该点呈现名为_era_header.html.slim的文件。

== render 'era/header'

此代码将从app/views/era/_header.html.slim中提取部分内容。注意Rails如何形成路径,即在app/views方法调用(即render)中给定路径前加era/header前缀。这就是在Rails中实现render方法的方法。

阅读 Naming Partials

的Rails指南说明