我遇到了一个奇怪的错误“AbstractController :: ActionNotFound(无法为EntryLevelsController找到动作'show')” 我没有定义'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,就好像我在routes.rb文件中的某处定义了'resource:entry_levels',但事实并非如此。我不知道为什么关于show动作的错误不断出现。
我的佣金路线如下所示:
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
答案 0 :(得分:0)
你的设置有点不典型。这里有一些提示。
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
来检查设置生成的路线,这也很好。
答案 1 :(得分:0)
我知道这已经过时了,但我的搜索结果却出现了,所以我想补充一下可能的答案。
当我有一个没有相应的get的帖子时,我收到了这个错误。当发生这种情况时,我要么将帖子定义为get(如果它以这种方式工作),或者我在routes.rb中创建匹配条目,以便在帖子作为get进入时将用户发送到根页面(例如,如果用户已注销):
match "entry_levels/create_entry_level" => "home#index", via: :get
然而,在这种情况下,问题似乎是你将create_entry_level定义为帖子两次。从来没有这样做,但可能搞砸了你。您忘了将create_entry_level更改为'change_priority'。