【发布时间】:2015-08-28 05:33:45
【问题描述】:
我有两个模型 Episode 和 Playlist 有以下两个视图:
剧集:
<div class="name">
<%= link_to episode.name, episode_path(episode) %>
</div>
<div class="description">
<%= link_to episode.description episode_path(episode) %>
</div>
对于播放列表:
<div class="name">
<%= link_to playlist.name, playlist_path(playlist) %>
</div>
<div class="description">
<span>Some special span</span>
<%= raw(playlist.description) %>
</div>
这两种观点的共同点是
<div class="name">. <div class="description">
但是这两个 divss 的内容对于每个视图是不同的。
问题:如何将这两个常见的 div 提取到另一个视图中,称为 _section?
我尝试了什么:
Cells -> 它们为我提供了一个带有属性的漂亮视图模型,但我找不到在放置属性的位置之间添加额外 HTML 元素的方法。
Yield 和 Content_for-> 我尝试创建一个单独的 _section 布局:
_section.html.erb
<div class="name">
<%= yield :name %>
</div>
<div class="description">
<%= yield :description %>
</div>
然后是两个视图。 Episode 视图将呈现以下内容
<% render layout: "section" do %>
<% content_for :name do %>
<%= link_to episode.name, episode_path(episode) %>
<% end %>
<% content_for :description do %>
<%= link_to episode.description episode_path(episode) %>
<% end %>
<% end %>
这种工作直到你开始缓存(他们说 content_for 不适用于缓存,我需要缓存这个),而我遇到的另一个问题是你应该包含一个额外的空而不是命名的 yield。
【问题讨论】:
标签: ruby-on-rails user-interface views