有没有办法在GRAILS中执行rails“yield / content_for”?

时间:2010-12-03 13:27:10

标签: grails

在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。

有什么想法吗? 的问候,

2 个答案:

答案 0 :(得分:2)

我认为你有两个解决方案:

如果您的内容块不会根据自定义页面进行更改,则g:render标记是最佳选择。

无论如何我会看看这个链接啊 http://grails.org/Content+Blocks

因为g:pageProperty它是最优雅和最灵活的解决方案。

答案 1 :(得分:0)

也许g:render标签是您要找的?它允许您在视图中的任何位置呈现模板(包括在其他模板中)。您还可以传递要使用的模板的模型。

请注意该页面底部有关命名约定的部分 - 模板视图gsp文件名应以下划线开头(尽管渲染标记中未提供该下划线)。有一种方法可以覆盖它,但是如果你把下划线放在那里,那么事情会自动运行。