ruby-on-rails – 资源和控制器生成器之间的区别

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 资源和控制器生成器之间的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我做的
  1. rails g model user name:string
  2. rails g controller users index create new destroy show

并编辑config / routes.rb来添加

  1. resource :users

捆绑执行rake路线给出:

  1. users POST /users(.:format) {:action=>"create",:controller=>"users"}
  2. new_users GET /users/new(.:format) {:action=>"new",:controller=>"users"}
  3. edit_users GET /users/edit(.:format) {:action=>"edit",:controller=>"users"}
  4. GET /users(.:format) {:action=>"show",:controller=>"users"}
  5. PUT /users(.:format) {:action=>"update",:controller=>"users"}
  6. DELETE /users(.:format) {:action=>"destroy",:controller=>"users"}

但是,当我做

  1. rails g resource users name:string

(它自动添加资源:用户到config / routes.rb)
捆绑执行耙子路由

我得到

  1. users GET /users(.:format) {:action=>"index",:controller=>"users"}
  2. POST /users(.:format) {:action=>"create",:controller=>"users"}
  3. new_user GET /users/new(.:format) {:action=>"new",:controller=>"users"}
  4. edit_user GET /users/:id/edit(.:format) {:action=>"edit",:controller=>"users"}
  5. user GET /users/:id(.:format) {:action=>"show",:controller=>"users"}
  6. PUT /users/:id(.:format) {:action=>"update",:controller=>"users"}
  7. DELETE /users/:id(.:format) {:action=>"destroy",:controller=>"users"}

所以我的问题是

当我生成一个控制器,我该如何获得正确的帮助方法
link_to’Destroy’,instance,:method => :删除
工作?

因为目前它给出错误user_path没有定义.

解决方法

你应该打电话
  1. rails g controller user index create new destroy show

代替

  1. rails g controller users index create new destroy show

为了获得资源:用户给你想要的帮手.

后者导致Rails假定用户是一个单一的对象,资源:用户应该创建一个所谓的单一资源:

http://guides.rubyonrails.org/routing.html#singular-resources

因此,user_path未定义,而users_path已定义.

猜你在找的Ruby相关文章