我的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。
答案 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
方法的方法。