2011-12-05 20 views
10

पर विशिष्ट ऑर्डरिंग के लिए एक संसाधन सॉर्ट करने योग्य बनाएं मैं सक्रिय व्यवस्थापक में किसी संसाधन को ऑर्डरिंग/पुन: ऑर्डर करने का प्रयास कर रहा हूं। मैं समझता हूं कि लॉग इन करते समय आप देखने के लिए अलग-अलग कॉलम द्वारा सॉर्ट कर सकते हैं। मैं जो करना चाहता हूं वह आइटम ऑर्डर करने में सक्षम है ताकि वे फ्रंट एंड पर एक विशिष्ट क्रम में प्रदर्शित हो सकें। इसे पूरा करने के तरीके पर कोई विचार?सक्रिय व्यवस्थापक - फ्रंट एंड

मेरे पास पहले से ही डेटाबेस में एक प्रकार का कॉलम है।

इसके अलावा मैं व्यवस्थापक अनुभाग में उस विशिष्ट क्रम में आइटम प्रदर्शित करना चाहता हूं।

किसी के पास कोई विचार है कि मैं इसे कैसे पूरा करूं?

उत्तर

25

मैंने हाल ही में इसे अपने होमस्लाइड मॉडल पर स्थित कॉलम का उपयोग करके कार्यान्वित किया।

ActiveAdmin.register HomeSlide do 
    config.sort_order = 'position_asc' 

    index do 
    column :title 
    default_actions 
    end 

    # This action is called by javascript when you drag and drop a column 
    # It iterates through the collection and sets the new position based on the 
    # order that jQuery submitted them 
    collection_action :sort, :method => :post do 
    params[:home_slide].each_with_index do |id, index| 
     HomeSlide.update_all(['position=?', index+1], ['id=?', id]) 
    end 
    render :nothing => true 
    end 

end 

अपने active_admin javascripts को यह जोड़ना (कॉफी स्क्रिप्ट)

sendSortRequestOfModel = (model_name) -> 
    formData = $('#' + model_name + ' tbody').sortable('serialize') 
    formData += "&" + $('meta[name=csrf-param]').attr("content") + "=" + encodeURIComponent($('meta[name=csrf-token]').attr("content")) 
    $.ajax 
    type: 'post' 
    data: formData 
    dataType: 'script' 
    url: '/admin/' + model_name + '/sort' 

jQuery ($) -> 

    # home page slides 
    if $('body.admin_home_slides.index').length 
    $("#home_slides tbody").disableSelection() 
    $("#home_slides tbody").sortable 
     axis: 'y' 
     cursor: 'move' 
     update: (event, ui) -> 
     sendSortRequestOfModel("home_slides") 
+0

अंत में इस लागू करने के लिए चारों ओर हो गया। धन्यवाद!!!!!!! एक जादू की तरह काम किया। –

+0

आपके उत्तर के लिए धन्यवाद :) – Awea

+0

विश्वास नहीं कर सकता कि यह * आसान * था! कुडोस, दोस्त! – dimitarvp

0

क्या आपके पास एक अलग फ्रंटएंड नियंत्रक है? आपके प्रश्न के activeadmin भाग के लिए:

यह अपने मॉडल/संसाधन के ActiveAdmin.register ब्लॉक के अंदर एक

config.sort_order = 'lastname_asc' 

या

config.sort_order = 'created_at_desc' 

घोषणा संभव है।

अपने मॉडल में, आप अपने प्रश्न पढ़ना ही यह उचित लगता है कि आप कुछ प्रलेखन पढ़ने के लिए की तरह

default_scope :order => "id DESC" 

कुछ डाल सकता है, यहाँ एक हिस्से से http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html

class Article < ActiveRecord::Base 
    scope :published, where(:published => true) 
    scope :featured, where(:featured => true) 

    def self.latest_article 
    order('published_at desc').first 
    end 

    def self.titles 
    map(&:title) 
    end 

end 

की नकल की कौन सा की अनुमति देता है आप इस तरह के तरीकों को कॉल करने के लिए:

Article.published.featured.latest_article 
Article.featured.titles 

शुभकामनाएँ।

संबंधित मुद्दे