未定义的方法`fragment_for”的零:NilClass上呈现局部与高速缓存(undefine

2019-10-17 06:56发布

我有这样一段代码在局部上轨2.3.14一些代码:

<% cache "some_partial_#{some_id}" do %>
....
<% end %>

在视图中绘制它的时候,但我得到正常工作:

undefined method `fragment_for' for nil:NilClass

当我尝试做一个模型:

 ActionView::Base.new("app/views").render(:partial => "home/temp"}

我可以看到这个问题存在的在ActionPack的-2.3.14 / lib目录/ ACTION_VIEW /助理/ cache_helper.rb:35

 def cache(name = {}, options = nil, &block)
    @controller.fragment_for(output_buffer, name, options, &block)
 end

我不知道到底是什么,预计@Controller找到。

Answer 1:

总之:不渲染,从模特的谐音 - 他们应该只包含业务逻辑。 发生错误,因为缓存调用它,因为你在这里绕过视图呈现逻辑你没有初始化控制器对象。

更新:

我看到它的唯一方法是让控制器实例,并把它作为PARAM。 如何获得控制器实例内部模型是由你。 我想这个问题可能是有益尝试

ActionView::Base.new("app/views", {}, @your_controller_instance).render(:partial => "home/temp")


Answer 2:

您可以添加:

include ActionController::Caching

你的课。



文章来源: undefined method `fragment_for' for nil:NilClass on render partial with cache