在rails中,我习惯使用yield/content_for
网站网格。 (http://guides.rubyonrails.org/layouts_and_rendering.html#using-content_for)
我在Grails文档中找不到这样做的方法......你能帮助我吗?
修改
情况如下:
我的布局包含:
<body>
<div id="wrapper">
<div id="container">
<div id="header">
<g:render template="/layouts/header"/>
</div>
<g:render template="/layouts/menu"/>
<div id="container-homepage">
<g:layoutBody/>
<div id="subfooter">
<div id="content">
<div id="left">
<div id="logo_sub_header"></div>
</div>
<div id="right"></div>
</div>
</div>
</div>
</div>
</div>
</body>
我希望能够在container-homepage
div之上添加一个html片段(例如搜索工具栏)juste。如果此搜索工具栏始终相同,则部分可以执行此操作。这里的问题是这个搜索栏取决于我正在访问的页面。
我也可以只更改容器主页div的位置,直接将其放入视图中,而不是布局,但是我必须在所有视图中使用它,而且这不是DRY。
有什么想法吗? 的问候,
答案 0 :(得分:2)
我认为你有两个解决方案:
如果您的内容块不会根据自定义页面进行更改,则g:render标记是最佳选择。
无论如何我会看看这个链接啊 http://grails.org/Content+Blocks
因为g:pageProperty它是最优雅和最灵活的解决方案。
答案 1 :(得分:0)
也许g:render标签是您要找的?它允许您在视图中的任何位置呈现模板(包括在其他模板中)。您还可以传递要使用的模板的模型。
请注意该页面底部有关命名约定的部分 - 模板视图gsp文件名应以下划线开头(尽管渲染标记中未提供该下划线)。有一种方法可以覆盖它,但是如果你把下划线放在那里,那么事情会自动运行。