创建类似于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
。
选项包括:
- 只使用
index
除非你真的需要它们(这看起来很奇怪)。 - 添加
list
RESTful操作,如此处所述(见下文)。 - 更改路由的顺序和/或使用约束以避免路由重叠。 国际海事组织这是最脆弱,最不可取的。
要添加list
操作(选项2):
resources :galleries do get 'list', :on => :collection end
您应该将您的galleries/list
路线放在所有其他画廊路线之前。
订单很重要。 在您的情况下,路由“galleries /:id”首先匹配并导致此错误。
您可以在此处获得有关Rails路由的详尽信息: 来自Outside In的Rails路由 。