2011-04-20 17 views
7

के साथ मैं कामिनरी के साथ परिणाम लोड करने के लिए "अधिक" बटन के साथ "ट्विटर जैसा" अंकन करने की कोशिश कर रहा हूं।रेल 3 - "अधिक" अमेक्स पेजिनेशन केमिनेरी

मैं इस सवाल here

पाया लेकिन मैं समझ नहीं है कि यह कैसे काम करता है और अगर यह एक अच्छा तरीका है बनाने के लिए।

अग्रिम

उत्तर

17

धन्यवाद तुम्हारा मतलब आप एक "अधिक" बटन की जरूरत है? इस तरह एक सहायक बनाने के बारे में कैसे?

# usage: 
# link_to_next_page(@items) 
# link_to_next_page(@items, :remote => true) # Ajax 
def link_to_next_page(scope, name, options = {}, &block) 
    param_name = options.delete(:param_name) || Kaminari.config.param_name 
    link_to_unless scope.last_page?, name, {param_name => (scope.current_page + 1)}, options.merge(:rel => 'next') do 
    block.call if block 
    end 
end 

यदि आप इसे उपयोगी पाते हैं, तो मैं इस तरह के सहायक तरीके को मणि में शामिल करने के लिए तैयार हूं, इसलिए कृपया मुझे बताएं कि आप क्या सोचते हैं। धन्यवाद!

+0

ग्रेट, बढ़िया काम करता है! वास्तव में यह मणि में शामिल होना उपयोगी होगा। यह एक बहुत ही आकर्षक और अधिक से अधिक सामान्य प्रकार की पेजिनेशन कवर करेगा :) धन्यवाद! – invaino

+0

हाय मैं इस पर आया क्योंकि मैं खुद को "अधिक" बटन बनाने की कोशिश कर रहा हूं। मैं jquery के साथ वास्तव में नया हूँ और कुछ भी नहीं जा रहा प्रतीत होता है। क्या आप समझा सकते हैं कि "अधिक" बटन बनाने के लिए jquery के साथ इस सहायक विधि को कैसे जोड़ा जा सकता है? –

+0

अधिक बटन बहुत अच्छा है लेकिन पिछले आइटम बने रहें और अगली आइटम पिछले आइटम के नीचे होनी चाहिए .. मैं बेहतर होगा – Uchenna

1

ध्यान रखें कि link_to_next_page(@items, :remote => true) बॉक्स से ठीक से काम नहीं करेगा। चूंकि इसका अजाक्स अनुरोध के बाद वर्तमान पृष्ठ को निर्धारित करने का कोई तरीका नहीं है, इसलिए नए आइटम प्राप्त होने के बाद लिंक को प्रतिस्थापित करने की आवश्यकता है। विनीत जावास्क्रिप्ट का उपयोग करना, यह कुछ इस तरह दिखेगा:

# app/views/items/index.js.erb 
$(".items").append("<%= escape_javascript(render(@items)) %>"); 
$(".more_link").replaceWith("<%= escape_javascript(
    link_to_next_page @items, 'View more', 
         :remote => true, 
         :id  => :view_more) %>"); 

यदि यह मतलब नहीं है, Railscasts पर Unobtrusive Javascript screencast पर एक नज़र डालें।