Ruby on rails 3.2 找不到EntryLevel控制器的操作“show”?

Ruby on rails 3.2 找不到EntryLevel控制器的操作“show”?,ruby-on-rails-3.2,routes,Ruby On Rails 3.2,Routes,我遇到AbstractController::ActionNotFound的奇怪错误找不到EntryLevel控制器的操作“show” 我没有定义“show”动作,因为我不需要它。我在资源条目_级别的集合中定义了自定义路由,如下所示: resources :entry_levels do collection do get 'create_entry_level' post 'create_entry_level' get 'edit_entry_levell'

我遇到AbstractController::ActionNotFound的奇怪错误找不到EntryLevel控制器的操作“show” 我没有定义“show”动作,因为我不需要它。我在资源条目_级别的集合中定义了自定义路由,如下所示:

resources :entry_levels do
  collection do
    get 'create_entry_level'
    post 'create_entry_level'
    get 'edit_entry_levell'
    post 'edit_entry_level'
    get 'update_entry_level'
    post 'update_entry_level'
    get 'delete_entry_level'
    post 'delete_entry_level'
    get 'entry_level_cancel'
    post 'entry_level_cancel'
    get 'change_priority'
    post 'create_entry_level'
  end
end
create_entry_level_entry_levels GET    /entry_levels/create_entry_level                                                              entry_levels#create_entry_level
                                                         POST   /entry_levels/create_entry_level                                                         entry_levels#create_entry_level
                      edit_entry_levell_entry_levels GET    /entry_levels/edit_entry_levell                                                           entry_levels#edit_entry_levell
                       edit_entry_level_entry_levels POST   /entry_levels/edit_entry_level                                                            entry_levels#edit_entry_level
                     update_entry_level_entry_levels GET    /entry_levels/update_entry_level                                                          entry_levels#update_entry_level
                                                         POST   /entry_levels/update_entry_level                                                          entry_levels#update_entry_level
                     delete_entry_level_entry_levels GET    /entry_levels/delete_entry_level                                                         entry_levels#delete_entry_level
                                                         POST   /entry_levels/delete_entry_level                                                          entry_levels#delete_entry_level
                     entry_level_cancel_entry_levels GET    /entry_levels/entry_level_cancel                                                         entry_levels#entry_level_cancel
                                                         POST   /entry_levels/entry_level_cancel                                                        entry_levels#entry_level_cancel
                          change_priority_entry_levels GET    /entry_levels/change_priority                                                              entry_levels#change_priority
                                                         POST   /entry_levels/create_entry_level                                                          entry_levels#create_entry_level
                                          entry_levels GET    /entry_levels                                                                              entry_levels#index
                                                         POST   /entry_levels                                                                              entry_levels#create
                                       new_entry_level GET    /entry_levels/new                                                                          entry_levels#new
                                      edit_entry_level GET    /entry_levels/:id/edit                                                                     entry_levels#edit
                                           entry_level GET    /entry_levels/:id                                                                           entry_levels#show
                                                         PUT    /entry_levels/:id                                                                           entry_levels#update
                                                         DELETE /entry_levels/:id                                                                          entry_levels#destroy
奇怪的是,rails为索引、显示、创建、删除、更新和编辑操作生成URL,就好像我在routes.rb文件的某个地方定义了一个“resource:entry_levels”,但事实并非如此。我不知道为什么关于表演动作的错误不断出现

我的rake路线如下所示:

resources :entry_levels do
  collection do
    get 'create_entry_level'
    post 'create_entry_level'
    get 'edit_entry_levell'
    post 'edit_entry_level'
    get 'update_entry_level'
    post 'update_entry_level'
    get 'delete_entry_level'
    post 'delete_entry_level'
    get 'entry_level_cancel'
    post 'entry_level_cancel'
    get 'change_priority'
    post 'create_entry_level'
  end
end
create_entry_level_entry_levels GET    /entry_levels/create_entry_level                                                              entry_levels#create_entry_level
                                                         POST   /entry_levels/create_entry_level                                                         entry_levels#create_entry_level
                      edit_entry_levell_entry_levels GET    /entry_levels/edit_entry_levell                                                           entry_levels#edit_entry_levell
                       edit_entry_level_entry_levels POST   /entry_levels/edit_entry_level                                                            entry_levels#edit_entry_level
                     update_entry_level_entry_levels GET    /entry_levels/update_entry_level                                                          entry_levels#update_entry_level
                                                         POST   /entry_levels/update_entry_level                                                          entry_levels#update_entry_level
                     delete_entry_level_entry_levels GET    /entry_levels/delete_entry_level                                                         entry_levels#delete_entry_level
                                                         POST   /entry_levels/delete_entry_level                                                          entry_levels#delete_entry_level
                     entry_level_cancel_entry_levels GET    /entry_levels/entry_level_cancel                                                         entry_levels#entry_level_cancel
                                                         POST   /entry_levels/entry_level_cancel                                                        entry_levels#entry_level_cancel
                          change_priority_entry_levels GET    /entry_levels/change_priority                                                              entry_levels#change_priority
                                                         POST   /entry_levels/create_entry_level                                                          entry_levels#create_entry_level
                                          entry_levels GET    /entry_levels                                                                              entry_levels#index
                                                         POST   /entry_levels                                                                              entry_levels#create
                                       new_entry_level GET    /entry_levels/new                                                                          entry_levels#new
                                      edit_entry_level GET    /entry_levels/:id/edit                                                                     entry_levels#edit
                                           entry_level GET    /entry_levels/:id                                                                           entry_levels#show
                                                         PUT    /entry_levels/:id                                                                           entry_levels#update
                                                         DELETE /entry_levels/:id                                                                          entry_levels#destroy

您的设置有点不典型。这里有一些提示

resources :entry_levels do
  # restful actions are automatically included, that is 
  # :index, :show, :new, :create, :edit, :update and :destroy

  put 'change_priority', on: :member # see the generated route and helpers with `rake routes`. A PUT request states that you are updating an existing resource.
end

知道你可以通过运行来检查哪些路由是由你的设置生成的也是一件好事。

我知道这是旧的,但它是在我的一次搜索中出现的,所以我想添加到可能的答案中

当我有一篇没有相应get的帖子时,我会得到这个错误。当这种情况发生时,我要么将帖子定义为get(如果它以这种方式工作),要么在routes.rb中创建一个匹配条目,以便在帖子以get形式进入时将用户发送到根页面(例如,如果用户已注销):

 match "entry_levels/create_entry_level" => "home#index", via: :get

然而,在这种情况下,问题似乎是您已经创建了两次定义为post的“入门级”。从来没有这样做过,但可能会把你搞砸。您忘记将“创建条目”级别更改为“更改优先级”。

当您遇到此错误时?我指的是哪个url。@maximus,当我从下拉选择框中选择课程时,调用入门级控制器中的操作时,会弹出错误。我使用ajaxok,但这是否意味着我应该在“资源:入门级”上面写自定义路线?我还认为“成员do”是用于嵌套对象的?我已经在问题中发布了我的rake路线。Thanx我真的很感激。这本书读得很好。我的观点是,您可能不需要您提供的非restful自定义路由,而是可以使用标准restful路由来执行此类标准操作。当然,我必须阅读有关路由的内容,因为我觉得路由已经痛苦了一段时间。那你会怎么安排路线呢?