2015-03-20 5 views
0

У меня есть сообщений модель, которая имеет Категория: строка столбик на нем. Я хочу показать все сообщения в определенных категориях.Список всех сообщений определенной категории

, например. При щелчке ссылки категории «Технология» загрузите все сообщения, в которых есть яблоко.

Не удалось найти что-либо в переполнении стека на этом, но я, возможно, искал неправильную вещь. Любая помощь будет блестящей и оцененной!

Благодаря

+0

Ваш запрос: 'Post.where (category: category_name)' Is t его то, что вы хотите, или вам нужно, как реализовать упомянутую вами особенность? –

+0

Btw вы можете не создавать также модель категории и иметь отношение «один ко многим» между категорией и почтой. – igavriil

+0

В настоящее время у меня нет модели категории, у меня есть только строковый столбец, который позволяет мне делать <% = f.выберите: category, ['Tech', 'Animals', 'News'],: prompt => 'Select One'%> Будет ли модель категории лучше круглая? – Jonathan

ответ

1

Post.where(category: 'Animals')

вернет все сообщения с заданной категории.

Что касается комментариев по вопросу - да, вы можете получить дополнительную модель Category, потому что почта может иметь более одной категории.

Вы бы определить отношение как одно из следующих действий:

  1. HBTM

    has_and_belongs_to_many :categories # post.rb has_and_belongs_to_many :posts # category.rb

  2. has_many через

post.rb

has_many :categories_posts 
has_many :categories, through: :categories_posts 

category.rb

has_many :categories_posts 
has_many :posts, through: :categories_posts 

categories_posts.rb

belongs_to :category 
belongs_to :post 

РЕДАКТИРОВАТЬ

, чтобы добавить выбора категории (й) с образованием, добавьте следующее к нему (при условии Category имеет name атрибутов):

<%= f.select :categories, Category.pluck(:id, :name), {}, multiple: true %> 

Также не забудьте белый список категорий в разрешенных Params (posts_controller.rb):

def post_params 
    params.require(:post).permit(:attr1, :attr2, category_ids: []) 
end 
+0

Спасибо, Андрей - блестящий! Как бы я хотел добавить категорию, у которой много, что позволяет мне иметь аналогичный ввод, как указано выше, на _form.html.erb – Jonathan

+0

Хе-хе вы уже его добавили! Как мне добавить добавление ввода в представление с новой моделью категории? – Jonathan

+0

И какое решение вы бы взяли с # 1 или # 2? Еще раз спасибо! – Jonathan

0

В модели post.rb добавьте scope:

scope :animals, -> { where(category: 'Animals') } 

Тогда в контроллере, вы можете позвонить:

Post.all.animals 
Смежные вопросы