несколько просмотров на странице рельсов - PullRequest
0 голосов
/ 22 ноября 2011

У меня вопрос очень высокого уровня, на который я не могу найти ответ, который имеет смысл для меня.Я понимаю, что это очень широкий вопрос, но я только после некоторых указаний, где искать ответы, а не инструкции о том, как создать мой сайт.

Итак ... Если я хочу сделать два разныхтипы контента на одной странице с использованием рельсов, как бы я это сделал?И как бы я отформатировать URL?Скажем, я создаю модель галереи и контроллер, который имеет информацию о галерее и, возможно, описание, затем я создаю контроллер входа в галерею и модель, которая принадлежит галерее, которая имеет изображение и имя изображения.Если я хочу создать URL-адрес типа www.siteURL/galleryName/GalleryEntry, который отображает как информацию и описание галереи, так и все связанные записи галереи, а также увеличенную версию записи галереи, которая названа в URL-адресе, с чего начать и какя структурирую это?Как мне создать URL с несколькими атрибутами и как я могу получить к ним доступ в контроллере / представлении?

Спасибо - и извините за смутный вопрос

1 Ответ

0 голосов
/ 22 ноября 2011

Есть несколько способов сделать это.

Ваш URL выглядит как "тщеславный" URL, который существовал бы в дополнение к обычному маршруту RESTful (galleries/:gallery_id/entries/:entry_id).Разница в том, что вы не хотите показывать просто запись галереи.

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

Отображение может выглядеть следующим образом:

match ':galleryName/:entryName' => 'gallery#highlight_entry' # Or whatever

Действие будет (более или менее)):

def highlight_entry
    @gallery = Gallery.find_by_name(...)
    @entries = @gallery.entries
    @highlighted_entry = # pull from @entries, or retrieve
    # Also, filter entries/etc. so the highlighted one doesn't show up
    # etc
end
...