2011-11-22 98 views
0

我有一个非常高层次的问题,我无法找到对我来说合理的答案。我明白这是一个非常广泛的问题,但我只是在寻找答案的一些指导之后,而不是关于如何构建我的网站的说明。导轨页面中的多个视图

所以...如果我想在一个页面中使用rails呈现两种不同类型的内容,我该如何去做这件事?并且,我将如何格式化网址?假设我创建了一个画廊模型和控制器,其中包含有关画廊的信息以及可能的描述,然后我创建了一个画廊入口控制器和属于具有图像和图像名称的画廊的模型。如果我想创建类似www.siteURL/galleryName/GalleryEntry的网址,可以同时呈现图库信息和描述以及所有关联的图库条目,但也会在网址中命名的图库条目的较大版本中,我将在哪开始以及如何构建这个?我将如何去创建一个具有多个属性的url,以及如何在控制器/视图中访问它们?

谢谢 - 对不起模糊的问题

+0

它看起来就像你在想这。将GalleryEntry加载到控制器中。这应该有一个':belongs_to'关联到图库,您可以在视图中使用它来显示图库信息。 Gallery应该有一个':has_many'关联回到你的条目,所以你可以在你的视图中使用它来显示与主条目相关的条目的缩略图。 – jdl

+0

这似乎是有道理的,但会发生什么,我想用默认图像显示画廊。例如,当你第一次到达画廊时,它应该显示默认图像,然后当你点击tumbnils时,你会被重定向到特定的图像,谢谢j –

回答

0

有几种方法可以解决这个问题。

您的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