【发布时间】:2010-12-04 21:22:07
【问题描述】:
首先,让我说我熟悉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>
【问题讨论】:
-
你有你现在在做什么的例子吗?
-
看起来 content_for 正是您在这里所需要的。你能发布一个它不起作用的例子吗?
-
添加了示例。我可能只是愚蠢,哈哈,但我也无法想出任何可行的替代方案......
标签: ruby-on-rails templates partials