ruby-on-railsjqueryrenderpartial

render partial on click


I would like to call partials on some standard operations. I am using this method for calling the partial:

 %li= link_to 'Delete Event', 'javascript:void(0);', :class => 'alert tiny button', :data => {'reveal-id' => :RevealDelete}
= render 'layouts/reveal_delete', :item => event_display(@event.event), :resource => @event

Then in my partial,

#RevealDelete.reveal-modal


 %a.close-reveal-modal ×
  %h3= "Delete #{item}"
  %p Are you sure you want to delete this?
  =link_to "Delete #{item}", resource, :method => :delete, :remote => :true, :confirm => resource, :class => 'button close-reveal-modal'
  %a.button.alert.close-reveal-modal Cancel

How can I have this has as something like:

link_to 'Delete', '#', :partial => 'layouts/delete', :remote => :true? 

so that I only render that partial when clicked and not when the page loads?


Solution

  • You can do that with javascript like:

    <%= link_to "Delete", delete_content_path, :remote => true %>
    

    The action in your corresponding controller then will be this:

    My Controller:

    def delete_content
      respond_to do |format|               
        format.js
      end        
    end 
    

    Then you can create the delete_content.js.erb inside your correct directory of the link and there you put the following code:

    delete_content.js.erb

    $('#div_id').html("<%= render :partial => 'my_partial' %>");
    

    Then in your view:

    delete_content.html.erb

    <div id = "div_id">
    #this div is html div that will render your partial
    
    </div>
    

    Don't forget to put your partial _my_partial.html.erb in the same folder.