在同一页面上多次渲染rails部分

Tyl*_*ler 3 ruby-on-rails render partial-views

我有一部分是我在同一页面上渲染两次,但在两个不同的位置(一个在标准布局中显示,一个在移动/平板电脑布局期间显示).

部分在两个地方呈现完全相同,所以我想通过将其作为变量存储来加速它,如果可能的话; partial每次都进行一次API调用,第二次调用完全没必要,因为它是第一次API调用的副本.

有没有办法将返回的部分中的HTML存储为变量,然后将其用于两个渲染?

编辑:我希望在没有缓存的情况下这样做,因为这是一个非常简单的需求,我希望保持代码库的精简和可读性.是否可以将partial存储为字符串变量然后引用两次?

Kyl*_*e C 7

<% content_for :example do %>
  <%= render :your_partial %>
<%end%>
Run Code Online (Sandbox Code Playgroud)

然后打电话<%= yield :example %><%= content_for :example %>任何你想要你的部分叫.


Tho*_*ell 6

一种选择是使用片段缓存.使用缓存块包装部分后,第二个调用应显示第一个调用的缓存版本.例如:

<% cache do %>
  <%= render(:partial => 'my_partial') %>
<% end %>

... later in the same view ...

<% cache do %>
  <%= render(:partial => 'my_partial') %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

要将渲染的结果存储到字符串,您可以尝试使用render_to_string方法AbstractController.参数与for相同render.

partial_string = render_to_string(:partial => 'my_partial')
Run Code Online (Sandbox Code Playgroud)