这让我发疯,我认为这应该很简单,但是我已经花了整整一天的时间试图弄清它,却一无所获。我到处都看了,有些东西我一定很想念。
我想在集合的一部分内渲染集合的一部分。
例如。我有一个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 %>
但是我真的不知道。
答案 0 :(得分:1)
部分命名约定确实可以帮助您...
在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
,这是该特定供稿的项目的集合
答案 1 :(得分:0)
类似:
<% @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
关联,如果不是这种情况(并且您想要在每个供稿中呈现相同的@entries
集合),那么您只需要将@entries
集合传递给_feed.html.slim
部分,例如:
render partial: 'feed`, locals: { feed: feed, entries: @entries }
并更新您的_feed.html.erb