2015-11-26 2 views
0

У меня есть модель Game и GamesController. В настоящее время на моей странице index показаны первые 10 записей из базы данных для приложения. Тем не менее, я хочу сделать еще одну страницу, где отображаются все игры.Действия с несколькими индексами в Rails

Мой вопрос: что такое Rails way ™ с этой целью? Возможно ли иметь действие index моего GamesController, чтобы делать запросы на основе того, какой URL-адрес я хочу отобразить? (Что-то вроде http:localhost:3000/all)

Rails 3.1 - How do I organize multiple index actions for the same model? был ближе всего к моему вопросу, но вопрос решает проблему с рельсов 3,1 датируемые 2012

+0

Вы можете использовать 'Request.url', чтобы проверить, какой URL был вызван. Хотя я рекомендую использовать разные действия для этих двух действий. –

+0

@ Зелёный Вы прочитали мой вопрос? Я видел эту проблему, но у меня другая природа. – Lotix

ответ

1

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

Сначала создайте новое действие и создайте отдельную страницу. Подумайте о соответствующем имени для него и создайте контроллер, маршрут и представление. Вы можете свести количество кода к минимуму за счет большей части кода представления в частичном использовании и использования в обоих представлениях.

Другой способ сделать это, если вы действительно хотите только одно действие, - передать параметр контроллеру индекса и запросить базу данных на основе этого параметра. Например:

link_to 'link text', game_index_path(:g => 'all') 

создаст URL, как: http://domain.com/game/index?g= «все» и в контроллере вы можете сделать это:

def index 
    which_games = params[:g] # should be all in this case 
    @games = Game.where(:criteria => which_games) 
end 

Вы можете использовать этот же метод для реализации сортировки и фильтрации и все виды вещей.

+0

Фантастический, именно тот ответ, который я искал. Я не был уверен, что это хорошая практика для создания совершенно нового действия за пределами стандартных (в этом случае я просто назвал свое действие «все» и создал конкретные виды и маршруты) – Lotix

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