在rails中创建自定义路由

时间:2016-05-05 16:14:40

标签: ruby-on-rails ruby

我正在创建一个自定义路线,如:

namespace :admin do
  root 'users#index'
  resources :users do
    get 'admin_login' => 'users#admin_login'
  end
end

但是当我看到rake routes时:

admin_user_admin_login GET    /admin/users/:user_id/admin_login(.:format)          admin/users#admin_login

为什么在这里添加:user_id ? 我只想要:user_id

2 个答案:

答案 0 :(得分:4)

因为您要在用户资源中创建自定义路由。 Rails正在做你正在告诉它的事情。您想要显示" admin_login"指定用户的路线(这是您当前告诉他们要做的事情)。

移动:

get 'admin_login' => 'users#admin_login' 

资源块之外的代码行,您就可以创建自定义路线。

答案 1 :(得分:2)

您需要指定一个on选项来告诉Rails它对集合有效,而不是成员资源。根据{{​​3}}

  

您可以省略:on选项,这将创建相同的成员   路由,但资源ID值可用   params [:photo_id]而不是params [:id]。

您也可以删除=> 'users#admin_login'部分,因为这是默认行为。

因此,问题的解决方案是添加on: :collection或将其放在像

这样的块中
namespace :admin do
  root 'users#index'

  resources :users do
    collection do
      get 'admin_login'
    end
  end
end