Rails路由映射不正确

时间:2013-05-28 05:35:49

标签: ruby-on-rails routes

我在路线中有以下声明:

  resource :users, :only => [:index, :show, :update, :destroy] do
    get "users/dashboard"
  end

然而,当我做rake路线时,我得到了:

dashboard_users GET    /users/users/dashboard(.:format)       users/users#dashboard
               users GET    /users(.:format)                       users#show
                     PUT    /users(.:format)                       users#update
                     DELETE /users(.:format)                       users#destroy

请注意,users_path错误地映射到用户#show。我在期待:

users GET    /users/:id/(.:format)                       users#show

可能导致此问题的原因以及我如何解决此问题?

2 个答案:

答案 0 :(得分:1)

您应该使用resources代替resource。 e.g。

resources 'users' 

资源和资源之间的区别是:

资源用于单个模型的操作。使用resource model时,没有“索引”操作。

请参阅:http://guides.rubyonrails.org/routing.html

更进一步,我注意到你的路线有点奇怪。如果你只是想用GET访问方法添加名为'dashboard'的动作,只需声明如下:

resources 'users' do 
  get :dashboard
end

答案 1 :(得分:0)

而不是这样做

resource :users, :only => [:index, :show, :update, :destroy] do
  get "users/dashboard"
end

这样做

namespace :dashboard do 
    resource :users, :only=>[:index,:show,:udpate,:destroy]
end

我认为这对你有用。