【发布时间】:2018-07-13 22:56:42
【问题描述】:
我有多个视图,每个视图都隐藏在一堆 div 中:
.row
.col-sm-8.col-sm-offset-2
.panel.panel-default
.panel-heading
/ Page heading goes here (eg. @form_heading)
.panel-body
= render 'form'
这用于跨多个模型的show、new 和edit,并按预期显示。 index 有不同的布局。因此,我不能只将这些 div 添加到 application.html.haml
在每个 show、new 和 edit 视图中都有它似乎不是很干,但是,当我把它放在部分视图中时,我得到了错误。
如果我使用:
# shared/_display_panel.html.haml
.row
.col-sm-8.col-sm-offset-2
.panel.panel-default
.panel-heading
/ Page heading goes here (eg. @form_heading)
.panel-body
# _form.html.haml
= simple_form_for @job do |f|
= f.error_notification
= render 'shared/error_messages', object: f.object
.form-inputs
= f.input :title
= f.input :summary
= f.input :body
.form-actions
= f.button :submit, 'Save Job', class: 'btn-success'
作为我的部分,然后尝试:
# new.html.haml
= render 'shared/display_panel'
= render 'form'
正如预期的那样,我得到了在display_panel div 之外/下呈现的form。
如果我尝试:
# new.html.haml
= render 'shared/display_panel'
= render 'form'
Rails 抛出以下错误:
/home/(me)/Projects/(current-project)/app/views/(my-model)/new.html.haml:4: syntax error, unexpected keyword_ensure, expecting end-of-input ensure ^~~~~~
Extracted source (around line #4):
2 = render 'form'
如果我将.panel-body 移动到_form 并尝试这两种方法,我会遇到同样的错误。
如何设置它以使用带有 HAML 的部分并使其全部显示为预期的方式?
编辑:
理想情况下,我希望有一组“样式”部分,它们只是为每个视图设置 div/类结构,而不管它们的模型或控制器如何:
- 一个用于
new、edit和show - 一个
index
这类似于上面显示的_display_panel.html.haml。
在此之后,我还希望能够根据他们当前使用的模型呈现部分表单。我不想把所有的逻辑都确定模型和方法放在部分中。
【问题讨论】:
标签: ruby-on-rails haml