2016-02-19 69 views
1

所以我採取在我看來,刪除用戶的方法,這是我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' 
+0

你有沒有重新啓動服務器? – MZaragoza

+0

剛剛做到了。仍然可以在控制檯上使用 – DevArenaCN

+0

,您可以檢查是否在頁面加載時收到了任何js錯誤,並確保jQuery現在已加載 – MZaragoza

回答

2

嘗試改變: <%= javascript_include_tag 'default' %> 到:<%= javascript_include_tag 'application' %> 因爲控制檯中的第一個錯誤是ActionController::RoutingError (No route matches [GET] "/javascripts/default.js")

+0

這樣做。謝謝! – DevArenaCN

+0

你是walcome – Younes

0

UPDATE有看看你的路由定義和你的link_to助手(它被指定method: :delete。嘗試改變

get '/u/sign_out' => 'devise/sessions#destroy' 

delete '/u/sign_out' => 'devise/sessions#destroy' 
+0

我的問題不是註銷,那很好。我的問題是,當我管理用戶時,我無法刪除它們。 – DevArenaCN

0

我相信你的問題是您使用的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> 
相關問題