作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
rails 支架 :layout
渲染集合部分时的选项,但布局适用于列表中的每个元素。
有没有办法围绕整个集合添加布局?
细节
假设我有一个集合 @promoted_stories
.我想围绕呈现的集合呈现一些 HTML,但前提是 @promoted_stories
不是空的。我想要的可以通过这种方式实现:
<% if @prometed_stories.present? %>
<div class="promoted-stories>
<%= render @promoted_stories %>
</div>
<% end %>
if
?我是无逻辑布局的粉丝,所以如果可能的话,我想避免在我的 View 中出现尽可能多的分支。如果这样的事情是可能的,我更愿意:
# View:
<%= render collection: @promoted_stories, collection_layout: 'promoted_stories' %>
# _promoted_stories.html.erb
<div class="promoted-stories">
<%= yield %>
</div>
最佳答案
虽然没有想象中的解决方案那么优雅,但这应该会达到类似的结果:
# Helper
def render_collection_template(template, collection)
render template: "layouts/#{template}", locals: { collection: collection } if collection.present?
end
# View
<%= render_collection_template 'promoted_stories', @promoted_stories %>
# Template
<div class="promoted-stories">
<%= render collection %>
</div>
关于ruby-on-rails - rails : How to render a layout around a collection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25310970/
我是一名优秀的程序员,十分优秀!