创建类似于index.html.erb的自定义视图

我正在创建一个自定义视图,它只是对index.html.erb了一些修改。 我希望能够在我的网络应用上创建一个链接,将用户定向到名为list.html.erb自定义视图。

这就是我所做的:

1)复制默认的脚手架索引视图并将其重命名为list.html.erb
2)通过复制index方法并重命名为list来修改GalleriesController

 def list @galleries = Gallery.all respond_to do |format| format.html # index.html.erb format.xml { render :xml => @galleries } end end 

3)修改routes.rb文件如下:

 match "galleries/list" => "galleries#list" 

我一直收到以下错误:

 Couldn't find Gallery with ID=list Rails.root: /Users/scervera/Sites/MDN Application Trace | Framework Trace | Full Trace app/controllers/galleries_controller.rb:28:in `show' 

在我对stackoverflow的搜索中,我无法找到任何类似的问题。

我猜你把match放在画廊resources路线之外和之后。

这意味着该list被解释为默认RESTful映射的:id

选项包括:

  1. 只使用index除非你真的需要它们(这看起来很奇怪)。
  2. 添加list RESTful操作,如此处所述(见下文)。
  3. 更改路由的顺序和/或使用约束以避免路由重叠。 国际海事组织这是最脆弱,最不可取的。

要添加list操作(选项2):

 resources :galleries do  get 'list', :on => :collection end 

您应该将您的galleries/list路线放在所有其他画廊路线之前。

订单很重要。 在您的情况下,路由“galleries /:id”首先匹配并导致此错误。

您可以在此处获得有关Rails路由的详尽信息: 来自Outside In的Rails路由 。