Rails路由:未初始化的常量ClanController

时间:2014-08-12 15:02:53

标签: ruby-on-rails ruby ruby-on-rails-4 rails-routing

我在路由自定义控制器操作时遇到一些问题

路线:

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

对编辑部分有任何建议吗?

3 个答案:

答案 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