Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 481
Boss Nass Avatar asked Mar 02 '13 13:03

Boss Nass


2 Answers

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.

like image 61
My God Avatar answered Sep 22 '22 13:09

My God


To add to the accepted answer, I only got it to work after changing the js portion to the following:

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

Without the escape_javascript it was just rendering the partial in the background and not updating the view.

like image 39
Alex Onsager Avatar answered Sep 18 '22 13:09

Alex Onsager