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

aco*_*rth 1 views ruby-on-rails

我正在创建一个自定义视图,稍微修改一下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 
Run Code Online (Sandbox Code Playgroud)

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

match "galleries/list" => "galleries#list"
Run Code Online (Sandbox Code Playgroud)

我一直收到以下错误:

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'
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*ton 5

我猜你把match画廊resources路线的外面和之后.

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

选项包括:

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

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

resources :galleries do
  get 'list', :on => :collection
end
Run Code Online (Sandbox Code Playgroud)