Rails Controller Action 越来越多,Rails 的 Routes CURD 无法满足需求

jarorwar · 2013年09月06日 · 最后由 huacnlee 回复于 2013年09月07日 · 2583 次阅读

越来越多的 controller,越来越多的 action,发现基本的 crud action 无法满足需求之后,写了很多的自定义 action,以及对应的 url 地址。现在已经很长,感觉很难看,求助~!谢谢~!


 get "role_menus/destroy"

  get "role_menus/create"

  get "role_menus/edit"

  post "/menus/destroy_selected" => "menus#destroy_selected"

  get "index/index"

  post '/users/destroy' => 'users#destroy_selected'

  post '/user/assign_role_to_user' => 'users#assign_role_to_user'

  get '/roles/not_assigned_to_user' => 'roles#roles_not_assigned_to_user'

  post '/roles/destroy' => 'roles#destroy'

  post '/roles/assign_menu_to_role' => 'roles#assign_menu_to_role'

  get '/menus/not_assigned_to_role' => 'menus#menus_not_assigned_to_role'

  post '/operations/destroy' => 'operations#destroy_selected'
  delete '/navigation/destroy_selected' => 'navigations#destroy_selected'

resources :menus  do
    resources :operations
  end

  resources :roles do
    resources :menus
  end

  resources :users do
    resources :roles
  end

  resources :operations

上面是其中的一部分。

resource  :role_menus, :controller => "RoleMenusController"  do
   member do 
       get :destroy
   end
end 
... ...

应该遵循 Rails 的 route 设计规则,别乱用。 其次,destroy 使用 Get 挺诡异的

#1 楼 @chucai 哦。这个 get 是为了给前台写 extjs 的测试。他说 delete 太麻烦了。。。 另外,类似这样的get '/menus/not_assigned_to_role' => 'menus#menus_not_assigned_to_role'该怎么写?只能这样了么?

#2 楼 @jarorwar 这个应该用 collection 吧。跟 member 类似的的语法。 应该重新看一下http://guides.rubyonrails.org/routing.html

#3 楼 @AlphaLiu ok,我看一下。谢谢了。。一直忙着赶代码。赶进度。。基础的到没看。。对不起 rails 啊。哈哈

如果你发现 CRUD 已经不够用了,说明你该创建一个新的 resource 了

#5 楼 @leomayleomay 哦。我觉得也是啊。哈哈

#6 楼 @Rei 没办法。先把需求赶完,然后慢慢学习慢慢优化~!

#2 楼 @jarorwar 那样就搞出漏洞了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号