Rails资源丰富的路由都指向索引操作?

时间:2010-10-15 02:49:20

标签: ruby-on-rails rest routing routes

我正在运行Rails 2.3.8。

我在routes.rb文件中设置了map.resources :users

当我运行rake routes时,它会显示:

users GET /users(.:format)                   {:action=>"index", :controller=>"users"}
GET /users(.:format)                   {:action=>"index", :controller=>"users"}
new_user GET /users/new(.:format)               {:action=>"index", :controller=>"users"}
edit_user GET /users/:id/edit(.:format)          {:action=>"index", :controller=>"users"}
user GET /users/:id(.:format)               {:action=>"index", :controller=>"users"}
GET /users/:id(.:format)               {:action=>"index", :controller=>"users"}
GET /users/:id(.:format)               {:action=>"index", :controller=>"users"}
/:controller/:action/:id           
/:controller/:action/:id(.:format)

抱歉格式化。但重点是...... 1)我的“PUT”,“POST”等路线在哪里?,2)为什么一切都指向index ??

非常感谢任何帮助......谢谢!

更新:完整路线档案:

ActionController::Routing::Routes.draw do |map|
  map.login "login", :controller => "user_sessions", :action => "new"
  map.logout "logout", :controller => "user_sessions", :action => "destroy"

  map.resources :users

  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end

我的users_controller拥有所有常用的新建,创建,显示,编辑,更新方法......

1 个答案:

答案 0 :(得分:0)

我认为你有两个问题之一:来自rake routes的输出被你的终端屏幕破坏,或者你的路线被你安装的其他东西覆盖,比如轨道引擎。

第一个很容易检查。听起来你有一个基本的用户脚手架设置(而不是其他)所以启动script/server,转到http://localhost:3000/users/new。如果您看到新用户页面,则会出现终端显示问题,但您的路线很好。但是,如果您看到用户索引页面,请继续执行下一步。

仔细检查您在上面发布的路线文件确实是您的应用的文件。这听起来很荒谬,但在某些编辑器中,打开错误的文件很容易。例如,在TextMate中,如果您销售了一些宝石并通过命令-T打开路径文件,则可以有多个routes.rb文件可供选择。

如果您确定要查看正确的路由文件,则下一步是检查您的应用程序是否有可能覆盖主文件的任何其他routes.rb文件。从终端,您可以运行find ./ -name routes.rb,这将列出任何其他路由文件。如果您安装了任何rails引擎,这种情况尤其可能。

让我知道这是怎么回事 - 如果您仍然遇到问题,可以将您的应用程序压缩并通过电子邮件发送给我,我会看看。