Я создал небольшое приложение для клонирования в Твиттере, где пользователи создают сообщения, следят за другими пользователями и получают фид всех сообщений пользователя, за которым они следят.Я добавил выбор категорий для постов, "триллер", "вестерн", "ужас" и так далее.
Когда пользователь вошел в систему, корневой веб-адрес является его приборной панелью.
routes.rb
root :to => "pages#home"
И на страницах # home находится фид пользователя: @feed_items = current_user.feed
PagesController
def home
@title = "Home"
@featured_posts = Post.featured.limit(10)
if user_signed_in?
@user = current_user
@post = current_user.posts.build
@feed_items = current_user.feed.paginate(:per_page => "10", :page => params[:page])
end
end
Теперь я понял, как разобрать фид и вытащитьподмножество фида, которое содержит только сообщения с category_id '2' (также известный как 'thriller')
@thriller_feed_items= current_user.feed.where(:category_id => '2')
Когда зарегистрированный пользователь переходит в root_path, он видит свою панель мониторинга и весь фид.Мне бы хотелось, чтобы была ссылка «триллеры», которая изменит текущие целые @feed_items на @thriller_feed_items, но я не совсем понимаю, как будут работать маршруты и представления.Твиттер использует /! # / Упоминает в качестве адреса для подмножества фидов. Нужно ли делать то же самое?Как бы я это настроил?
РЕДАКТИРОВАТЬ: показать, как работает мой метод подачи.
Модель пользователя
def feed
Post.from_users_followed_by(self)
end
Пост-модель
def self.followed_by(user)
followed_ids = %(SELECT followed_id FROM relationships
WHERE follower_id = :user_id)
where("user_id IN (#{followed_ids}) OR user_id = :user_id", :user_id => user)
end