一篇文章可以属于很多故事。让我们来说政治'和经济#。想在下面的文章中显示相关文章的单个列表。目前让它返回,分两个街区:
Latest Politics Articles
1. Politics Link
2. Politics Link
3. Politics Link
Latest Economy Articles
1. Economy Link
2. Economy Link
3. Economy Link
如何将结果合并到一个列表中?
Latest Politics & Economy Articles
1. Politics Link
2. Economy Link
3. Economy Link
4. Politics Link
5. Etc.
文章块的代码目前是:
<% @article.stories.each do |story| %>
<h3><%= story.story %></h3>
<ul style="margin-left: 15px;">
<% story.articles.lastfive.each do |article| %>
<li><span class="listing-update-slug"><%= link_to article.headline, article</span></li>
<% end %>
</ul>
<% end %>
更新:文章模型:
has_and_belongs_to_many :categories
has_and_belongs_to_many :regions
has_and_belongs_to_many :stories
belongs_to :type
has_many :newsitems
has_many :comments, as: :commentable, dependent: :destroy
...加上一些方法和一堆范围。
答案 0 :(得分:0)
您可以执行范围并将该问题委托给ActiveRecord:
在文章模型中:
class Article < ActiveRecord::Base
...
:by_stories, -> (s){ joins(:stories).where("stories.id = ?", s)}
...
end
在控制器中:
...
def related_articles
Article.by_stories(@article.stories.pluck(:id)).where.not(id: @article.id)
end
...