rails页面中的多个视图

时间:2011-11-22 14:01:18

标签: ruby-on-rails ruby views

我有一个非常高级别的问题,我无法找到对我有用的答案。我理解这是一个非常广泛的问题,但我只是在寻找答案的一些指示,而不是关于如何建立我的网站的说明。

所以...如果我想使用rails在一个页面中呈现两种不同类型的内容,我将如何进行此操作?我将如何格式化网址?假设我创建了一个图库模型和控制器,其中包含有关图库和可能描述的信息,然后我创建了一个图库条目控制器和模型,它属于具有图像和图像名称的图库。如果我想创建一个类似于www.siteURL/galleryName/GalleryEntry的网址,它既可以呈现图库信息和描述,也可以呈现所有相关的图库条目,还可以在网址中指定的更大版本的图库条目。我将如何构建这个?我将如何创建具有多个属性的URL以及如何在控制器/视图中访问它们?

谢谢 - 对于模糊的问题感到抱歉

1 个答案:

答案 0 :(得分:0)

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

您的网址看起来像一个“虚荣”网址,除了正常的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