单例资源 - 如何删除与单例不同的资源

时间:2010-01-13 02:11:06

标签: ruby-on-rails url resources

在routes.rb中我有

map.resource :user

在我想要的一个模板中

link_to 'delete', some_other_user,:method => :交

我希望这会生成像

这样的网址

/user/#{some_other_user.id}

但改为

/user.#{user.to_s}

我找到的唯一解决方案是添加新路线

map.delete_user 'users/:id', :controller => 'users', :action => 'destroy', :method => :delete

然后使用

link_to 'delete', delete_user_url(user), :method => :delete

这看起来有点hacky,有更清洁的方式吗?

2 个答案:

答案 0 :(得分:1)

单例资源通常用于对一个资源(例如,当前用户)执行操作。如果我想操纵另一个用户,例如从管理员的角度来看,我会

  map.resources :users

如果我只想对其他用户执行销毁操作,我会

  map.resources :users, :only => [:destroy]

然后你只能执行销毁行动。

在此用户编辑他们的帐户和管理员管理所有帐户的情况(如果我假设正确)我会创建两个控制器,

  • AccountsController - 允许当前用户编辑其帐户(单身资源)
  • UsersController - 允许管理员编辑所有用户帐户

路线就像这样:

  map.resource :account
  map.resources :users

这样,如果需要,可以将权限分为普通用户和管理员权限。

希望这有帮助

答案 1 :(得分:0)

除了AntRamm的回答,要获取资源的销毁URL,您需要手动将方法指定为删除:

link_to 'delete', user_url(some_other_user), :method => :delete

有关详细信息,请参阅the docs