[英]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.