Ruby on rails 更优雅的Rails路由,然后是一个巨大的列表

Ruby on rails 更优雅的Rails路由,然后是一个巨大的列表,ruby-on-rails,routes,Ruby On Rails,Routes,我的Rails应用程序有一个管理控制器,但它越来越大,越来越笨拙。以下是一个示例: get '/administration/events', :controller => :administration, :action => :event_index get '/administration/events/new', :controller => :administration, :action => :event_new post '/administration/

我的Rails应用程序有一个管理控制器,但它越来越大,越来越笨拙。以下是一个示例:

get '/administration/events', :controller => :administration, :action => :event_index
get '/administration/events/new', :controller => :administration, :action => :event_new
post '/administration/events/create', :controller => :administration, :action => :event_create
get '/administration/events/:id/edit', :controller => :administration, :action => :event_edit
post '/administration/events/:id/update', :controller => :administration, :action => :event_update
delete '/administration/events/:id/delete', :controller => :administration, :action => :event_delete
这是可行的,但是有更好的方法吗?(我的控制器实际路由是该条目数的3或4倍。

您应该改用:

您应改为使用:


您似乎已经构建了一个巨大的控制器,其中包含许多处理一组资源的操作。您显示的示例:
事件
。这应该在一个单独的
管理::事件控制器

你的url看起来是REST风格,现在你应该将其与你的应用程序结构相匹配

您的目录结构应该如下所示

/app
  /controllers
    /administration
      events_controller.rb
      ..
然后你的路线就变成了

namespace :administration do
  resources :events
  # ... other resources ...
end

您似乎已经构建了一个巨大的控制器,其中包含许多处理一组资源的操作。您显示的示例:
事件
。这应该在一个单独的
管理::事件控制器

你的url看起来是REST风格,现在你应该将其与你的应用程序结构相匹配

您的目录结构应该如下所示

/app
  /controllers
    /administration
      events_controller.rb
      ..
然后你的路线就变成了

namespace :administration do
  resources :events
  # ... other resources ...
end

如果我已经有了“events\u controller”该怎么办?这是针对事件(和其他资源)的特殊管理操作。这样可以吗?当然,这一点都没有问题。例如,我有一个rails项目,其中EventsController用于前台ent用户,
admin/events\u controller
用于管理员,而
api/events\u controller
用于api(所有这些都具有稍微不同的行为)。我更喜欢它,而不是将它混合在一个大控制器中。它们确实共享相同的
事件
模型。如果我已经有一个“events\u controller”怎么办?这是用于事件(和其他资源)的特殊管理操作。这样可以吗?当然,这一点都没有问题。例如,我有一个rails项目,其中EventsController用于前台ent用户,
admin/events\u controller
用于管理员,而
api/events\u controller
用于api(所有这些都具有稍微不同的行为)我更喜欢它,而不是把它混合在一个大控制器中。它们确实共享相同的
事件
模型。