加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails:如何在集合周围渲染布局?

发布时间:2020-12-17 02:22:56 所属栏目:百科 来源:网络整理
导读:Rails支持:渲染集合部分时的布局选项,但布局适用于列表中的每个元素. 有没有办法在整个集合中添加布局? 细节 假设我有一个@promoted_stories的集合.我想在渲染集合周围渲染一些HTML,但仅当@promoted_stories不为空时.我想要的就是这样: % if @prometed_st
Rails支持:渲染集合部分时的布局选项,但布局适用于列表中的每个元素.

有没有办法在整个集合中添加布局?

细节

假设我有一个@promoted_stories的集合.我想在渲染集合周围渲染一些HTML,但仅当@promoted_stories不为空时.我想要的就是这样:

<% if @prometed_stories.present? %>
<div class="promoted-stories>
  <%= render @promoted_stories %>
</div>
<% end %>

我可以这样做,并避免如果?我是无逻辑布局的粉丝,所以如果可能的话,我想避免在我的视图中尽可能多的分支.我更喜欢这样的事情是可能的:

# 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>

现在有一个pull request用于实现集合渲染的集合布局的rails.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读