render partial on click

前端 未结 3 1000
醉梦人生
醉梦人生 2020-12-24 04:15

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(         


        
相关标签:
3条回答
  • 2020-12-24 04:22

    on the view do this:

    link_to "Delete #{item}", '/model/confirm_deletion', :method => :delete, :remote => true #add the class and extra attributes if neeeded
    

    on your controller

    def confirm_deletion
    end
    

    and add a view to the confirm_deletion action in js

    #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
    
    :javascript
      $(body).append($('#RevealDelete'));
    

    that would make an ajax request to load that custom confirmation dialog, maybe you want to add some wrapper to insert the dialog instead of using body.append

    0 讨论(0)
  • 2020-12-24 04:23

    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.

    0 讨论(0)
  • 2020-12-24 04:36

    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.

    0 讨论(0)
提交回复
热议问题