2011-09-18 8 views
5

मैं एक मोडल संवाद बॉक्स लोड करने के लिए link_to विधि के लिए एक ऑनक्लिक विकल्प जोड़ना चाहता हूं ... मैं रेल संस्करण 2.3.8 का उपयोग कर रहा हूं और मैंने Google पर खोज की और इसे नहीं कर सका। कृपया कोई मेरी मदद करो?रेल में link_to विधि के लिए एक ऑनक्लिक विकल्प जोड़ना?

मेरी लिंक_to विधि निम्नानुसार है।

<%= link_to 'All countries',{:controller=>'countries', :action=>'new'}, :remote => true %> 

उत्तर

6

यदि आप 2.3.8 का उपयोग कर रहे हैं, तो आपके पास: दूरस्थ => सत्य नहीं है। यदि आप AJAX कार्रवाई करने का प्रयास कर रहे हैं तो आपको link_to_remote का उपयोग करने की आवश्यकता है।

तो यह कुछ ऐसा दिखाई देगा:

<%= link_to_remote 'All countries', :url => {:controller => 'countries', :action => 'new'}%> 
<div id="populate_me"></div> 

और अपने नए विधि के साथ कुछ

तरह

countries_controller.rb

def new 
    <do something> 
    render :update do |page| 
    page.replace_html 'populate_me', :partial => 'whatever' 
    end 
end 

UPDATED ajax अनुरोध को पूरा करने के लिए होता है

यदि आप AJAX कार्रवाई के अलावा ऑनक्लिक चाहते हैं, y कहां बस एचटीएमएल विकल्पों में इसे पारित कर सकते हैं:

<%= link_to_remote 'All countries', :url => {:controller => 'countries', :action => 'new'}, :html => {:onclick => 'alert("some javascript executed before ajax")'} %> 
+0

धन्यवाद क्रिस:

, :class => "pop light", :id => "modal_link" 

फिर, अपने जे एस कुछ ईक यह दिखाता है। मैं उस div में आंशिक सामग्री लोड .. लेकिन मैं मोडल संवाद बॉक्स लोड करना चाहता हूँ। मुझे वह कोड कहां रखना चाहिए? मैं रेल के लिए नया हूं और मूर्ख सामान पूछने के लिए खेद है। – Rosh

+0

AJAX अनुरोध के साथ ऑनक्लिक शामिल करने के लिए अद्यतन किया गया –

0

आप लिंक करने के लिए इस जोड़ सकते हैं:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('a.poplight[href^=#]').click(function() { 
     var popID = $(this).attr('rel'); //Get Popup Name 
     var popURL = $(this).attr('href'); //Get Popup href to define size 
     var query= popURL.split('?'); 
     var dim= query[1].split('&'); 
     var popWidth = dim[0].split('=')[1]; //Gets the first query string value 
     $('#' + popID).fadeIn().css({ 'width': Number(popWidth) }).prepend('<a href="#" class="close"></a>'); 
     $('a.close').hide(); 
     var popMargTop = ($('#' + popID).height() + 80)/2; 
     var popMargLeft = ($('#' + popID).width() + 80)/2; 
     $('#' + popID).css({ 
      'margin-top' : -popMargTop, 
      'margin-left' : -popMargLeft 
     }); 
     $('body').append('<div id="fade"></div>'); 
     $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn(); 
     return false; 
     }); 
     $('a.close').live('click', function() { 
      $('#fade , .popup_block').fadeOut(function() { 
      $('#fade, a.close').remove(); 
      }); 
      return false; 
     });   
     $('#modal_link').click(); 
    }); 
    </script>