In my rails application I have dragdrop.js.erb in /assets/javascript folder. In which I have an ajax block which should render a partial in a div with an on click action. I tried many things but I can't get it working. Any help would be appreciated.
Here is the code:
 $.ajax({  
   type: "GET",    
   url: "<%=  Rails.application.routes.url_helpers.cookbooks_path %>",
   success: function(resp){
  $("#property").load("<%= escape_javascript (render :partial => 'recipes/package_form') %>") 
   }
                Your problem is that you are trying to use render in assets, however, render is not available in assets
You should move your .js.erb file to an appropriate directory under app/views
Here are some other similar question:
Asset Pipeline
Firstly, you need to make sure that you don't use any Rails dynamic path helpers in your javascript directly.
The issue is that if you pre-compile your asset pipeline, you'll typically find these dynamic path helpers won't work correctly. Although there's nothing "wrong" with it - I tend to keep Rails back-end code completely separate from the front-end, as to ensure the versatility of the application:
#app/assets/javascripts/application.js
$(document).on("click", ".element", function(){
   $.ajax({  
     type: "GET",    
     url: "/cookbooks"
  });
});
This will send a "naked" Ajax request (no params / body) to your controller backend:
#app/controllers/cookbooks_controller.rb
Class CookbooksController < ApplicationController
   def index
      @cookbooks = Cookbook.all
      respond_to do |format|
        format.html
        format.js #-> loads /views/cookbooks/index.js.erb
      end
   end
end
The trick here is that you can now populate your index.js.erb file with the params necessary to render the partial:
#app/views/cookbooks/index.js.erb
$("#property").html("<%=j render :partial => 'recipes/package_form' %>") 
--
This should work for you
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With