शीर्षक बहुत अधिक बताता है। मुझे एक अजीब स्थिति है जहां विचार अजाक्स का उपयोग करके अधिसूचनाओं को हटाने की अनुमति देता है जिससे current_user लॉग आउट हो जाता है। मैं यह भी नहीं जानते, जहां इस डिबगिंग शुरू करने के लिए ...अजाक्स लिंक हटाएं current_user
यहाँ नियंत्रक
class NotificationsController < ApplicationController
def destroy
@notification = Notification.find(params[:id])
@notification.destroy
respond_to do |format|
format.js
end
end
end
इस पूरी नियंत्रक है, कुछ भी नहीं संक्षिप्त है। नोटिफिकेशन सिस्टम द्वारा जेनरेट किए जाते हैं, इसलिए उपयोगकर्ता द्वारा की जाने वाली एकमात्र कार्रवाई उन्हें "खारिज" (यानी हटाएं) है।
मैंने इसे नए respond_with
वाक्यविन्यास का उपयोग करके भी कोशिश की और इसका असर पड़ा।
मैं डेविस और रेल 3.0.9 का उपयोग कर रहा हूं। कोई विचार क्या हो रहा है - या डीबग कैसे करें पर सुझाव ??
- संपादित करें 1 -
routes.rb
resources :notifications, :only => [:destroy]
हटाएं लिंक
%span.delete= link_to('dismiss', notification_path(notification), :method => :delete, :remote => true)
- संपादित करें 2 -
ठीक है, मैं में कुछ नया देखा लॉग - नीचे **** देखें।
Started DELETE "/notifications/10" for 127.0.0.1 at 2011-06-21 21:47:15 -0500
Processing by NotificationsController#destroy as JS
Parameters: {"id"=>"10"}
SQL (0.4ms) SELECT name
FROM sqlite_master
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
SQL (0.3ms) SELECT name
FROM sqlite_master
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
User Load (0.7ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
Slug Load (0.4ms) SELECT "slugs".* FROM "slugs" WHERE ("slugs".sluggable_id = 1 AND "slugs".sluggable_type = 'User') ORDER BY id DESC LIMIT 1
****AREL (0.3ms) UPDATE "users" SET "remember_token" = NULL, "remember_created_at" = NULL, "updated_at" = '2011-06-22 02:47:15.913839', "preferences" = '---
:email_notifications: ''true''
' WHERE "users"."id" = 1
Notification Load (0.2ms) SELECT "notifications".* FROM "notifications" WHERE "notifications"."id" = 10 LIMIT 1
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
AREL (0.3ms) UPDATE "users" SET "notifications_count" = COALESCE("notifications_count", 0) - 1 WHERE "users"."id" = 1
AREL (0.1ms) DELETE FROM "notifications" WHERE "notifications"."id" = 10
Rendered notifications/destroy.js.erb (0.7ms)
Completed 200 OK in 6416ms (Views: 9.6ms | ActiveRecord: 4.1ms)
तो, वहाँ यह है, यह उन तालिका के भाग की तरह लग रहा सत्र को समाप्त करने अशक्त करने के लिए सेट कर दिया जाता हो रही है, विशेष रूप से remember_token जो मुझे लगता है वसीयत ट्रिगर कर रहा है या हो सकता है इस के बाद वसीयत द्वारा किया जाता है सत्र नष्ट हो गया है। लेकिन मैं इसे कैसे ट्रैक करूं?
एकमात्र चीज जो मैं सोच सकता हूं जिसके कारण नोटिफिकेशन उपयोगकर्ताओं के साथ बातचीत करने का कारण बनता है counter_cache
उपयोगकर्ताओं पर notifications_count
के लिए है।
मैं डीबग करने के तरीके पर विचारों और सुझावों की सराहना करता हूं!
- संपादित 3 -
माणिक डिबग के साथ खुदाई के बाद यह मुद्दा तरह तैयार करने से संबंधित है और लग रहा है rails.js स्क्रिप्ट में परिवर्तन। देखें:
https://github.com/plataformatec/devise/issues/913
https://github.com/ryanb/cancan/issues/280
मैं उन धागे पर सुझावों में से कुछ बाहर कोशिश कर रहा हूँ और अगर मैं एक समाधान खोजने के पोस्ट करेंगे।
आप किस ड्राइवर और संस्करण का उपयोग कर रहे हैं? मुझे वही समस्या है (मुझे पागल गाड़ी चलाएं!), और यह jquery-ujs v। 1.0.12 के साथ तय नहीं है। डेविस 1.3.4 भी चल रहा है धन्यवाद! – Chris
@ क्रिस, 'devise (1.4.0)', और 'jquery-rails (1.0.12) ' – Andrew
एचएम का उपयोग करके, मैंने 1.4.0 तक अपग्रेड किया लेकिन कोई पासा नहीं। डीबग बोर्ड पर वापस .. – Chris