资源和控制器生成器之间的区别

nur*_*tin 12 ruby-on-rails ruby-on-rails-3

当我做

rails g model user name:string
rails g controller users index create new destroy show
Run Code Online (Sandbox Code Playgroud)

并编辑config/routes.rb以添加:

resource :users
Run Code Online (Sandbox Code Playgroud)

捆绑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"}
           DELETE /users(.:format)      {:action=>"destroy", :controller=>"users"}
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做的时候

rails g resource users name:string
Run Code Online (Sandbox Code Playgroud)

(自动添加资源:用户到config/routes.rb)捆绑exec rake路由

我明白了

    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"}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,

当我生成一个控制器时,如何获得正确的帮助方法来使link_to'Destroy',实例,:method =>:删除工作?

因为当前它给出了错误,所以没有定义user_path.

jnk*_*rkt 13

你应该打电话

rails g controller user index create new destroy show
Run Code Online (Sandbox Code Playgroud)

代替

rails g controller users index create new destroy show
Run Code Online (Sandbox Code Playgroud)

为了resources :users给你你想要的帮手.

后者导致Rails假设它users是一个单一的对象,并且resources :users应该创建所谓的奇异资源:

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

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