2012-12-19 15 views
12

रेल ऐप (3.2.8) और टर्बोलिंक्स () प्रासंगिक) सक्षम होने के बाद जावास्क्रिप्ट निष्पादित करने के लिए रेल तकनीक निष्पादित करने के लिए सक्षम है।रीडायरेक्ट

  1. मेरे पास कुछ जानकारी है, link उपयोगकर्ता दिखाएँ पृष्ठ पर। (उदाहरण, एक सूचना है कि कुछ बदल गया है।)
  2. लिंक पर उपयोगकर्ता क्लिक करता है मैं उसे पृष्ठ पर भेजें करना चाहते हैं और
  3. दिखने में तत्वों को बदल पर प्रकाश डाला।

वर्तमान में मैं इस तरह इसे संभाल करने की योजना बना रही है:

लिंक बनाएं ताकि वे के रूप में हैं:

project2/comment.1453

एक notifications controller, जो projects2 और हो जाता है बनाएं परिवर्तन का प्रकार comment और इसकी आईडी 1453। तो सिद्धांत में मैं projects2 पर रीडायरेक्ट करना चाहता हूं और उस पृष्ठ पर आईडी 1453 के साथ टिप्पणी को हाइलाइट करना चाहता हूं। समस्या यह है: पुनर्निर्देशन के बाद मैं टिप्पणी को कैसे हाइलाइट करूं?

notificationscontroller.rb (छद्म कोड!)

def show 
    project = Project.find(params[:project_id]) 
    comment = Comment.find(params[:commment_id]) 
    redirect_to project AND highlight! 
end 

अपना शोध के दौरान मैं रीढ़ का सामना करना पड़ा, और रीढ़ की हड्डी रूटर हाइलाइटिंग एक समारोह के साथ यूआरएल का जवाब देने से इस समस्या का समाधान कर सकता है की तरह (यह लग रहा है टिप्पणी का)। लेकिन मुझे बैकबोन के साथ कोई अनुभव नहीं है।

मुझे यकीन नहीं है कि इस तरह की कार्यक्षमता के लिए सामान्य दृष्टिकोण क्या है। और गलत रास्ते पर जाने से बचना चाहते हैं। अगर आप मेरी मदद कर सकते हैं तो बहुत अच्छा होगा।

संपादित करें: एक मिनी प्रश्न का क्रमबद्ध करें: मुझे यकीन नहीं है कि comment.1453 के लिए कौन सा चरित्र उपयोग करना है # एक बेहतर विकल्प है? (comment#1453)

उत्तर

4

आप जिस पृष्ठ पर रीडायरेक्ट करते हैं उस पर जावास्क्रिप्ट को शामिल करने के अलावा आप रीडायरेक्ट के बाद जावास्क्रिप्ट नहीं चला सकते हैं।

आप जो चाहते हैं वह इस अनुरोध से अगले (पुनर्निर्देशित) अनुरोध पर जानकारी लेना है।

फ्लैश ऐसा करने का एक अच्छा तरीका है। आम तौर पर पाठ संदेशों के लिए इसका इस्तेमाल करते हैं you'ld:

redirect_to project, notice: "Project foo bar message" 

या

flash[:notice] = "Project foo bar message" 
redirect_to project 

कुछ भी नहीं है कि आप फ्लैश में अन्य पहचानकर्ता का उपयोग करते हुए और उनके में JSON संग्रहीत करने से बंद हो जाता है नहीं है।

flash[:highlight_ids] = "[12, 43, 472, 482]" 
redirect_to project 

फिर अपने लेआउट में या कहीं इस फ़्लैश संदेश जावास्क्रिप्ट को निकालें:

var highlight_ids = <%= flash[:highlight_ids] %>; 

तब वास्तविक तत्वों पर प्रकाश डाला करने के लिए अपने जावास्क्रिप्ट जादू है।

+0

एक सहायक मैं इस तरह लग रहा है एक कुकी में जानकारी स्टोर करने के लिए की तुलना में एक क्लीनर तरीका है, इसलिए मैं इस जवाब को स्वीकार करने के लिए जा रहा हूँ है। धन्यवाद – wpp

2

संभव तरीकों में से एक:

स्टोर आईडी (और अगर न केवल टिप्पणियों को उजागर करने की जरूरत है संभव ऑब्जेक्ट प्रकार) सत्र में या सीधे कुकी में (अपने छद्म कोड में show कार्रवाई)

def show 
    project = Project.find(params[:project_id]) 
    comment = Comment.find(params[:commment_id]) 
    cookies[:highlight_id] = comment.id 
    cookies[:highlight_type] = 'Comment' # optionally 
    redirect_to project 
end 

परियोजनाओं नियंत्रक में show कार्रवाई

def show 
    ... 
    if cookies[:highlight_id] and cookies[:highlight_type] 
    @highlight_id = cookies[:highlight_id] 
    @highlight_type = cookies[:highlight_type] 
    cookies.delete[:highlight_id] 
    cookies.delete[:highlight_type] 
    end 

और टिप्पणियां देखने में

<div class="some_class <%= highlight(@comment, @highlight_id, @highlight_type %>" ... 

कहाँ highlight तरह

def highlight(object, object_id, object_type) 
    if object_id and object_type and object.is_a?(object_type.classify.constantize) 
    'highlighted' 
    end 
end 
संबंधित मुद्दे