资源生成器和控制器生成器之间的区别 [英] difference between resource and controller generators
问题描述
当我这样做时
rails g 模型用户名:字符串rails g 控制器用户索引创建新的销毁显示
并编辑 config/routes.rb 以添加:
资源:用户
bundle exec rake 路由给出:
users POST/users(.:format) {:action=>"create", :controller=>"users"}new_users GET/users/new(.:format) {:action=>"new", :controller=>"users"}edit_users GET/users/edit(.:format) {:action=>"edit", :controller=>"users"}GET/users(.:format) {:action=>"show", :controller=>"users"}PUT/users(.:format) {:action=>"update", :controller=>"users"}删除/users(.:format) {:action=>"destroy", :controller=>"users"}
但是,当我这样做时
rails g 资源用户名:字符串
(自动添加资源 :users 到 config/routes.rb)捆绑执行耙路线
我明白
users GET/users(.:format) {:action=>"index", :controller=>"users"}POST/users(.:format) {:action=>"create", :controller=>"users"}new_user GET/users/new(.:format) {:action=>"new", :controller=>"users"}edit_user GET/users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}user GET/users/:id(.:format) {:action=>"show", :controller=>"users"}PUT/users/:id(.:format) {:action=>"update", :controller=>"users"}删除/users/:id(.:format) {:action=>"destroy", :controller=>"users"}
所以我的问题是,
当我生成一个控制器时,我怎样才能获得正确的辅助方法来制作link_to 'Destroy', 实例, :method=> :delete工作?
因为当前它给出了一个错误 user_path 未定义.
你应该打电话
rails g controller user index create new destroy show
代替
rails g controller users index create new destroy show
为了让 resources :users
给你你想要的帮助.
后者使 Rails 假定 users
是一个单一对象,并且 resources :users
应该创建所谓的单一资源:
http://guides.rubyonrails.org/routing.html#singular-resources>
因此,user_path
未定义,而 users_path
已定义.
when I do
rails g model user name:string
rails g controller users index create new destroy show
and edit config/routes.rb to add:
resource :users
bundle exec rake routes gives:
users POST /users(.:format) {:action=>"create", :controller=>"users"}
new_users GET /users/new(.:format) {:action=>"new", :controller=>"users"}
edit_users GET /users/edit(.:format) {:action=>"edit", :controller=>"users"}
GET /users(.:format) {:action=>"show", :controller=>"users"}
PUT /users(.:format) {:action=>"update", :controller=>"users"}
DELETE /users(.:format) {:action=>"destroy", :controller=>"users"}
however, when I do
rails g resource users name:string
(which automatically adds resources :users to config/routes.rb) bundle exec rake routes
I get
users GET /users(.:format) {:action=>"index", :controller=>"users"}
POST /users(.:format) {:action=>"create", :controller=>"users"}
new_user GET /users/new(.:format) {:action=>"new", :controller=>"users"}
edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
user GET /users/:id(.:format) {:action=>"show", :controller=>"users"}
PUT /users/:id(.:format) {:action=>"update", :controller=>"users"}
DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"}
So my question is,
when I generate a controller how can I get the correct helper methods to make link_to 'Destroy', instance, :method=> :delete work?
Because currently it gives an error user_path is not defined.
You should call
rails g controller user index create new destroy show
instead of
rails g controller users index create new destroy show
in order to get resources :users
to give you the helpers you want.
The latter causes Rails to assume that users
is a singular object, and that resources :users
should create what is called a singular resource:
http://guides.rubyonrails.org/routing.html#singular-resources
as a result, user_path
is undefined, whereas users_path
is defined.
这篇关于资源生成器和控制器生成器之间的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!