繁体   English   中英

在Rails的集合中渲染集合

[英]Rendering collections within collection in Rails

这让我发疯,我认为这应该是很简单的事情,但是我整天都在努力找出问题,却一无所获。 我到处都在看,有些东西我一定很想念。

我想在集合的一部分内渲染集合的一部分。

例如。 我有一些entries要在我的feed部分呈现,我希望feed来自feeds的集合,以便页面显示所有提要中的所有条目。

我怎样才能做到这一点?

就像是:

控制器:

@feeds = Feeds.all

allmyfeeds.html.erb

@feeds.each do |feed|
<%= render 'feed' %>
<% end %>

要么

<%= render 'feeds', collection: @feeds %>

_feed.html.erb

<%= render 'items', collection: @items %>

_item.html.erb

<%= item.summary.html_safe %>

但是我真的不知道。

部分命名约定确实可以在这里为您提供帮助...

allmyfeeds.html.erb (我想实际上是feeds/index.html.erb )中,而不是此...

@feeds.each do |feed|
  <%= render 'feed' %>
<% end %>

您可以简单地称之为...

<%= render @feeds %>  # this will invoke _feed.html.erb for every feed in the collection, automatically

_feed.html.erb部分内部...

# Note: You may need to change `items` to something like `items/items` if it is not located in the same directory
<%= render partial: 'items', locals: { items: feed.items } %>

然后,在部分项目中,您将可以访问items ,这是该特定提要的项目的集合

有点像:

<% @feeds.each do |feed| %>
  <%= render partial: 'feed', locals: { feed: feed } %>
<% end %>

_feed.html.erb

<h1><%= feed.id %> </h1>
<% feed.entries.each do |entry| %>
  <&= render partial: 'entry', locals: { entry: entry } %>
<% end %>

在您的_entry.html.erb

<h2><%= entry.id %></h2>

我假设您的Feed模型具有has_many :entries关联,如果不是这种情况(并且您想要在每个Feed中呈现相同的@entries集合),那么您只需要将@entries集合传递给_feed.html.slim部分,例如:

render partial: 'feed`, locals: { feed: feed, entries: @entries }

并更新您的_feed.html.erb

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM