找不到入门级控制器的操作"显示"?



我面临一个奇怪的错误"AbstractController::ActionNotFound(动作'show'无法找到EntryLevelsController)"我没有定义"show"动作,因为我不需要它。相反,我在资源entry_levels中的集合中定义了自定义路由,如下所示:

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

奇怪的是,rails为索引、显示、创建、删除、更新和编辑操作生成url,就好像我在路由的某个地方定义了一个'resource:entry_levels'。Rb文件,而不是这种情况。我不知道为什么关于显示动作的错误一直弹出。

我的rake路由如下所示:

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

您还可以通过运行 $ rake routes 来检查由设置生成的路由。

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

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

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

在这种情况下,然而,问题似乎是你有create_entry_level定义为一个帖子两次。从来没有这样做过,但可能会把你搞得一团糟。您忘记将create_entry_level更改为change_priority了

最新更新