如何在一个视图中渲染来自不相关控制器的部分...几乎是亚马逊风格

时间:2011-11-20 01:54:13

标签: ruby-on-rails-3.1 rendering partial-views

我们如何将来自不同控制器的许多部分渲染到一个视图中? 每个部分的局部变量在不同的独立控制器中单独计算。

我真正需要做的事情更具体,是家庭布局,并且在具有动态内容的布局中,有一部分仅处理网站范围的新闻公告,并且这些是独立更新的。

我知道这样的快速黑客:

render :partial => '/news', :locals=> {@news = News.last}

但我想要更“正确”的东西。就像我一直在阅读:模板渲染,但我不确定它在Rails 3.1中是如何工作的。

任何帮助都将受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

2.2.3从另一个控制器渲染动作模板 如果要从完全不同的控制器渲染模板而不是包含操作代码的控制器,该怎么办?您也可以使用render执行此操作,render接受要呈现的模板的完整路径(相对于app / views)。例如,如果您在app / controllers / admin中的AdminProductsController中运行代码,则可以通过以下方式将操作结果呈现给app / views / products中的模板:

渲染'产品/展示' Rails知道该视图属于不同的控制器,因为字符串中嵌入了斜杠字符。如果你想要显式,你可以使用:template选项(在Rails 2.2和更早版本中是必需的):

render:template =>的产品/显示'

资料来源:http://guides.rubyonrails.org/layouts_and_rendering.html#using-content_for

应该阅读更多细节。