在routes.rb文件中没有通过resource命令生成索引路由

时间:2017-04-24 02:28:47

标签: ruby-on-rails

在ruby on rails应用程序中,我有以下路径文件:

Rails.application.routes.draw do
  get 'pages/index'
  get 'pages/about'
  root to: 'pages#index'
  resource :graphs, only: [:index, :create, :show, :destroy]
end

这将生成图形的路径#create,graphs#show,graphs#destroy但不会生成图形#index。我认为这样做的原因是,当我生成控制器时,我使用了rails g controller Graph,即我使用了单数形式而不是多个图形。为了解决这个问题,我更改了相应的文件和目录名称,例如controller / graphs_controller.rb和views / graphs,我将graphs_controller.rb中的常量更改为GraphsController。除了没有生成索引路由之外,一切似乎都有效。我可以通过将资源声明更改为

来解决它
  resource :graphs, only: [:create, :show, :destroy] do
    get :index
  end

但这看起来很混乱。似乎我需要改变其他东西来实现从图形到图形的转换。我该如何解决?请注意,我已多次重启服务器。

2 个答案:

答案 0 :(得分:4)

使用resources代替resource

Rails.application.routes.draw do
  get 'pages/index'
  get 'pages/about'
  root to: 'pages#index'
  resources :graphs, only: [:index, :create, :show, :destroy]
end

答案 1 :(得分:0)

应该是资源而不是资源