Delete方法不能在Rails的调用
所以我采取在我看来,删除用户的方法,这是我users_controllerDelete方法不能在Rails的调用
def destroy
@user = User.find(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to users_path, notice: 'This user was successfully destroyed.' }
format.json { head :no_content }
end
end
而且我认为,破坏方法:
<td><%= link_to 'Delete', users_path(user), method: :delete, data: { confirm: 'Are you sure?' } %></td>
和的application.js
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require bootstrap-sprockets
//= require_tree .
,并在布局/ application.html.erb我:
<%= javascript_include_tag 'default' %>
每次我点击了破坏链接,它只是刷新并不会删除。我应该提到的是该视图是superadmins下的,而superadmins_controller是从users_controller继承而来的,我在这里写了destroy方法。我认为route.rb可能有问题,但我不能提出解决方案。我的route.rb看起来像这样:
Rails.application.routes.draw do
root to: 'visitors#index'
devise_for :users, :path =>'u'
devise_scope :user do
get '/u/sign_out' => 'devise/sessions#destroy'
end
resources :users
resources :superadmins
end
谢谢!
在控制台上
ActionController::RoutingError (No route matches [GET] "/javascripts/default.js"):
actionpack (4.2.5.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
web-console (2.3.0) lib/web_console/middleware.rb:28:in `block in call'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `catch'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `call'
actionpack (4.2.5.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.2.5.1) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.2.5.1) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.2.5.1) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.2.5.1) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.2.5.1) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.2.5.1) lib/rails/rack/logger.rb:20:in `call'
quiet_assets (1.1.0) lib/quiet_assets.rb:27:in `call_with_quiet_assets'
actionpack (4.2.5.1) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.6.4) lib/rack/methodoverride.rb:22:in `call'
rack (1.6.4) lib/rack/runtime.rb:18:in `call'
activesupport (4.2.5.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
rack (1.6.4) lib/rack/lock.rb:17:in `call'
actionpack (4.2.5.1) lib/action_dispatch/middleware/static.rb:116:in `call'
rack (1.6.4) lib/rack/sendfile.rb:113:in `call'
railties (4.2.5.1) lib/rails/engine.rb:518:in `call'
railties (4.2.5.1) lib/rails/application.rb:165:in `call'
rack (1.6.4) lib/rack/lock.rb:17:in `call'
rack (1.6.4) lib/rack/content_length.rb:15:in `call'
rack (1.6.4) lib/rack/handler/webrick.rb:88:in `service'
/Users/pc/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
/Users/pc/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
/Users/pc/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'
尝试改变: <%= javascript_include_tag 'default' %>
到:<%= javascript_include_tag 'application' %>
因为控制台中的第一个错误是ActionController::RoutingError (No route matches [GET] "/javascripts/default.js")
这样做。谢谢! – DevArenaCN
你是walcome – Younes
UPDATE有看看你的路由定义和你的link_to助手(它被指定method: :delete
。尝试改变
get '/u/sign_out' => 'devise/sessions#destroy'
到
delete '/u/sign_out' => 'devise/sessions#destroy'
我的问题不是注销,那很好。我的问题是,当我管理用户时,我无法删除它们。 – DevArenaCN
我相信你的问题是您使用的users_path
而不是正确user_path
所以改变这种
<td><%= link_to 'Delete', users_path(user), method: :delete, data: { confirm: 'Are you sure?' } %></td>
这个
<td><%= link_to 'Delete', user_path(user), method: :delete, data: { confirm: 'Are you sure?' } %></td>
你有没有重新启动服务器? – MZaragoza
刚刚做到了。仍然可以在控制台上使用 – DevArenaCN
,您可以检查是否在页面加载时收到了任何js错误,并确保jQuery现在已加载 – MZaragoza