2016-03-06 2 views
0

Статья может принадлежать многим историям. Скажем, «политика» и «экономика». Хотите показать один список связанных статей ниже статьи. В настоящее время он возвращается в двух блоках:Rails: объединение результатов из двух категорий в один список для просмотра

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 %> 

UPDATE: Статья модель:

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

Вы можете сделать сферу и делегировать эту проблему в 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 
... 
+0

Не работает .: 'PG :: UndefinedColumn: ОШИБКА: column articles.story не существует LINE 1: SELECT "articles". * FROM "articles" WHERE "articles". "Story" ... ' –

+0

Можете ли вы поделиться моделью article.rb? –

+0

Редактировали оригинал. –

 Смежные вопросы

  • Нет связанных вопросов^_^