首先,让我说我熟悉content_for
。这不是我在这里寻找的。让模板和多个部分添加到布局
我想允许一个模板和任意数量的部分来建立一个我想要加载的JavaScript文件列表,并将它们传递给它的布局以便处理并添加到<head>
区域。如果页面实际上需要它们,我只想加载这些文件,所以我宁愿不将它们全部放入布局中。它也不是由控制器处理的东西,因为这些主要是视图特定的更改。
我试过使用content_for
来返回一个名称数组,但似乎没有工作。它也不允许多个部分将其自己的先决条件添加到列表中。我还尝试在模板/分支中使用助手函数来添加到列表中,然后在布局中使用该列表,但似乎在模板代码之前评估了布局代码。
任何想法?顺便说一下,这不是特定于JavaScript的;我只需要一种方法将Ruby对象从模板/部分传递到布局。
编辑:每个请求,一个例子。 css_import
只是我写的模拟CSS @import
的帮手。
# In the layout
<style type="text/css">
<%- yield(:foobar).each do |foo| -%>
<%= css_import foo %>
<%- end -%>
</style>
# In the template
<%- content_for :foobar do
['layout', 'recipes', 'user']
end -%>
# The actual output from View -> Source
<style type="text/css">
</style>
你有没有一个你现在在做什么的例子? – 2009-10-08 06:45:30
它确实看起来像content_for正是你需要在这里。你可以发布一个不起作用的例子吗? – jdl 2009-10-08 06:48:16
添加示例。我可能只是愚蠢的,哈哈,但我还没有能够拿出任何可行的替代方案... – Twisol 2009-10-08 07:06:24