【问题标题】:Render cached action of another controller inside erb template在 erb 模板中渲染另一个控制器的缓存操作
【发布时间】:2010-08-30 07:52:05
【问题描述】:

我想在我的 erb 模板中呈现动作。

<div>
  <%= render :controller => :tags, :action => :tag_cloud %>
</div>

此块抛出异常:nil:NilClass 的未定义方法 `formats'

我还想从缓存中渲染 tag_cloud 动作。这可能吗?

问候, 阿列克谢·扎哈夫

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    提醒一下 render :action 不会运行标签控制器,它只是使用您在当前控制器中定义的变量渲染 tag_cloud erb。 因此,您必须在控制器中定义模板中所需的所有实例变量,包括调用格式方法的变量。

    【讨论】:

    • 当我使用 ASP.NET MVC 时,我能够在视图中呈现另一个控制器的操作。我希望 Rails 也能做到这一点。
    • 它曾经存在,它被称为渲染:组件。但它被删除了,因为被认为是一种代码味道。经典的解决方法是在 application_controller 中设置一个前置过滤器,用于设置您需要的变量,并在您需要的每个视图/布局中使用标签云渲染一个部分。您也可以缓存部分以避免每次都渲染它。
    猜你喜欢
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多