我在Rails 4.我有两个资源:子文章和文章。子粒子嵌套在这样的文章中:
resources :articles do
resources :subarticles do
member do
put "like" => "subarticles#upvote"
put "dislike" => "subarticles#downvote"
end
end
end
在文章显示页面上,我显示了所有子文章。但是,我想将一些文章属性(特别是图片和视频)直接放在第一个子文章下面。
我无法找到有关这样做的任何文档。
另请注意,我有按投票数排序的子粒子。因此,如果一个人被投票高于另一个,那么它将会出现在顶部。但我想在第一个子文章下保留相同的图片和视频。
以下是我的文章展示页面的简化版本:
<div class="row">
<div class="col-md-9">
<div class="well" style="background:white; height:230px">
<%= @article.title.titleize %><br>
<%= social_share_button_tag %>
</div>
<% @subarticles.each do |subarticle| %>
<div class="well" style="background:white">
<%= subarticle.rating %><br>
<%= subarticle.whyrating %><br>
<div class="row" style="margin-top:40px;">
<div class="col-md-7 col-md-offset-1" style="margin-top:30px">
<%= link_to like_article_subarticle_path(@article, subarticle), class: "like", method: :put do %>
<button type="button" class="btn btn-success btn-lg" aria-label="Left Align" style="margin-right:5px">
<span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span> Helpful
</button><span class="badge" style="margin-right:10px"><%= subarticle.get_upvotes.size %></span>
<% end %>
<%= link_to dislike_article_subarticle_path(@article, subarticle), class: "like", method: :put do %>
<button type="button" class="btn btn-danger btn-lg" aria-label="Left Align" style="margin-right:5px">
<span class="glyphicon glyphicon-thumbs-down" aria-hidden="true"></span> Unhelpful
</button><span class="badge"><%= subarticle.get_downvotes.size %></span>
<% end %>
</div>
</div>
</div>
<% end %>
<div class="well" style="background:white; text-align:center">
<h4>Pictures & Videos</h4><br>
<%= image_tag @article.image1(:medium) %><br>
<div class="embed-responsive embed-responsive-4by3">
<iframe class="embed-responsive-item" src="<%= @article.video1 %>"></iframe>
</div>
</div>
</div>
</div>
由于@subarticles.each do
它会将图片和视频一直推到底部。显示第一个子粒子的最佳方法是什么,然后是图片和图片。视频,然后是其余的子文章?
如果我需要显示任何其他代码,请告诉我。
答案 0 :(得分:2)
<% @subarticles.each_with_index do |subarticle, i| %>
<div class="well" style="background:white">
....... // subarticle contents
</div>
<% if i==0 %>
// put articles content here
<% end %>
<% end %>
以这种方式在第一个subarticle
if 条件检查循环索引后,由于循环索引当前为0,那么它将首先显示subarticle
第一个内容,然后对于索引0,它显示article
内容。
答案 1 :(得分:1)
您可以随时使用标志:
<% first_one = false %>
<% @subarticles.each do |subarticle| %>
<div class="well" style="background:white">
...
</div>
<% unless first_one %>
// article contents here....
<% first_one = true %>
<% end %>
<% end %>