【问题标题】:Rendering controller/action within a different view在不同的视图中渲染控制器/动作
【发布时间】:2012-03-06 03:04:06
【问题描述】:

我正在 Ruby on Rails 中寻找一种方法来在其他视图中呈现完全不同的控制器操作。

例如,我正在编写一个显示他们专辑的乐队网站。所以我有 /albums/list 显示他们所有专辑的列表以及页面周围的其他内容作为布局。现在我要做的也是在每个页面中呈现 /news/list 作为布局的一部分,以便您访问的每个页面都可以看到它。

我找不到调用新闻控制器列表操作并使用部分视图在列表视图中显示它的方法。任何帮助将不胜感激。

【问题讨论】:

  • 听起来您可能想将该动作分解为部分并呈现它?
  • 我试过把它变成像/news/_list这样的部分。但是,它仍然需要我传入新闻集合或在专辑控制器或应用程序级别中查询新闻集合。我想不出一种方法来呈现部分内容并让它通过 NewsController._list 流向列表视图。
  • 听起来你想保持相当严格和宁静?您可以从 NewsController 请求 json。
  • 除此之外,似乎最合乎逻辑的方法是创建共享部分并设置@news 集合
  • 是的,尽量遵循严格的设计。我已经做到了,所以应用程序控制器查询新闻,因为我到处都需要它。只是希望有更好的选择。我想知道 Rails 是否有一天会支持子视图作为完全独立的事物,而不仅仅是一种请求类型的事物。

标签: ruby-on-rails


【解决方案1】:

http://api.rubyonrails.org/classes/ActionView/Helpers/RenderingHelper.html#method-i-render

render() 方法使您能够渲染特定文件,放置在任何目录中:)

也阅读这篇文章 - http://blog.plataformatec.com.br/2012/01/my-five-favorite-hidden-features-in-rails-3-2 特别是关于“自定义部分路径”。

【讨论】:

  • 这里的问题是 NewsController 没有被调用。渲染功能仅直接进入视图文件。所以在这种情况下,我必须查询每个页面中的新闻,或者在应用程序级别有一个前置过滤器,以便可以显示新闻视图,因为它依赖于初始化的@news。
猜你喜欢
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2015-10-19
  • 1970-01-01
相关资源
最近更新 更多