在Rails中生成“widgetized”内容的最佳实践是什么?

时间:2010-09-10 11:45:22

标签: ruby-on-rails model-view-controller zend-framework widget

在我之前使用Zend Framework构建的项目中,我广泛使用了Zend_view的“Action View”帮助器。它基本上允许从视图脚本启动一个单独的request-> dispatch ti action-> view_rendering循环。

以下是zend framework reference guide相应页面的链接(搜索“Action View Helper”)。

这个助手是一种非常方便的方式来处理小部件内容,例如在具有门户布局的页面上,您可以在其中填充具有不同小部件的页面(如广告块,货币线人等)。

虽然这种方法会对页面的响应时间产生负面影响,因为它涉及大量额外的路由/调度活动,但它允许将窗口小部件代码和视图脚本组织成合理的结构。一个小部件只是一个控制器动作,带有链接视图脚本。

不幸的是,我在Rails中找不到任何类似的视图助手。 有没有办法在Rails中优雅地解决这个任务?

2 个答案:

答案 0 :(得分:0)

在Rails中,renderActionController方法将Hash作为参数并输出一个简单的字符串。您可以在视图中使用它,如下所示:

<%= render :partial => "shared/widgets/_#{widget.widgettype.name}", :collection => @current_user.widgets %>

在这种情况下,Rails将遍历 @ current_user.widgets 列表,在“app / views / shared / widgets / _ widgettypename .html中找到小部件的部分内容.erb“,并为每个附加的小部件调用partial。

有关Rails部分内容的进一步阅读,请参阅ActionView::Partials文档。

答案 1 :(得分:0)

似乎我自己找到了问题的答案。它是“render_component”rails插件。还有a fork显然支持Rails3。