我在路由自定义控制器操作时遇到一些问题
路线:
resources :clans do
get 'leave' =>'clan#leave_clan'
get 'dismiss' =>'clan#dismiss_clan'
get 'kick_from_clan/:user_id' =>'clan#kick'
get 'invite/:user_id' =>'clan#invite'
get 'join' =>'clan#join'
end
namespace :admin do
resources :clans
resources :users
end
我知道我在管理员名称空间中都有clans
,但也没有,但我需要它,行动完全不同。
我使用生成的路线clan_join_path(clan)
。
此操作会导致下一个错误:
uninitialized constant ClanController
目录结构:
/app
/controller
/admin
/ClansController.rb
/ClansController.rb
编辑:
也不会按预期生成邀请和踢取路线。
*no path* GET /clans/:clan_id/kick_from_clan/:user_id(.:format) clan#kick
*no path* GET /clans/:clan_id/invite/:user_id(.:format) clan#invite
对编辑部分有任何建议吗?
答案 0 :(得分:3)
您正在定义一个名为clans
的资源,我假设您有一个名为ClansController
的控制器(请注意puralization)。如果您没有此控制器,您将需要创建它。
因此,您可能需要复数路线:
resources :clans do
get 'leave' =>'clans#leave_clan'
get 'dismiss' =>'clans#dismiss_clan'
get 'kick_from_clan/:user_id' =>'clans#kick'
get 'invite/:user_id' =>'clans#invite'
get 'join' =>'clans#join'
end
还要确保您的控制器名为clans_controller.rb
(复数)。
答案 1 :(得分:1)
您可以使用member do ... end
根据操作类型正确路由
resources :clans do
member do
get :leave
get :dismiss
#etc
end
end
这会将路线定义为clans/:id/leave
clans/:id/dismiss
答案 2 :(得分:0)
检查你的clans_controller.rb是否故意不是复数。
resources :clans do
get 'leave' =>'clans#leave_clan'
get 'dismiss' =>'clans#dismiss_clan'
get 'kick_from_clan/:user_id' =>'clans#kick'
get 'invite/:user_id' =>'clans#invite'
get 'join' =>'clans#join'
end
应用/控制器/ clans_controller.rb 强>
class ClansController < ApplicationController
end