我正在创建一个自定义视图,只是对index.html.erb
进行了轻微修改。我希望能够在我的网络应用上创建一个链接,引导用户访问名为list.html.erb
的自定义视图。
这就是我所做的:
1)复制默认的脚手架索引视图并将其重命名为list.html.erb
2)通过复制GalleriesController
方法并重命名为index
来修改list
:
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的搜索中,我无法找到任何类似的问题。
答案 0 :(得分:5)
我猜你把match
置于图库resources
路线之外和之后。
这意味着list
被解释为默认RESTful映射的:id
。
选项包括:
index
,除非你真的需要它们(这看起来很奇怪)。list
RESTful操作(见下文)。添加list
操作(选项2):
resources :galleries do
get 'list', :on => :collection
end
答案 1 :(得分:1)
您应该将galleries/list
路线放在所有其他画廊路线之前。
订单很重要。在您的情况下,路由“galleries /:id”首先匹配并导致此错误。
您可以在此处获取有关Rails路由的详尽信息:Rails Routing from the Outside In。