6

I'm trying to get my pagination working with Ajax, using either will_paginate or kaminari.

When I hit pagination link my log says

Processing by Instructor::FullDashboardController#pupil_leads as JS

and

Rendered instructor/full_dashboard/pupil_leads.js.erb within layouts/main (0.1ms)

But the js has no effect. So to test it I wrote

console.log("Hello");
<%logger.debug "This is the js file"%>
alert('Hello Rails');

In the js.erb file, in my log I see This is the js file as expected, but there is nothing in js console in my browser and the alert doesn't show. So I know the file is being processed, as my logger.debug works but there is no js.

How can I further troubleshoot this?

Rails 4.1

Ruby 2.1

Full Dash Controller

class Instructor::FullDashboardController < ApplicationController
   layout 'main'
...
   def pupil_leads
     @ivar = Model.where("something = ?", some_object.id).order("created_at desc").page(params[:page]).per(10)
     respond_to do |f|
       f.js { render :content_type => 'text/javascript' }
       f.html
     end
  end
3
  • please show full Instructor::FullDashboardController. Commented Nov 25, 2014 at 12:23
  • It's a bit long for that, do you want the relevant action? Commented Nov 25, 2014 at 12:23
  • post pupil_leads action. Commented Nov 25, 2014 at 12:24

1 Answer 1

21

Add layout: false option to the render block:

def pupil_leads
   # some code here
  respond_to do |f|
    f.js { render layout: false, content_type: 'text/javascript' }
    f.html
  end
end

For some reason Rails don't recognize request as xhr, I also watched that the views extension (.erb.html or .slim) must be specified in full.

Sign up to request clarification or add additional context in comments.

4 Comments

Thank you. Can you possibly give a short explanation as to why this is needed? Just for reference.
Thanks so much, I was going totally crazy with this. One of those "wish I had asked sooner and saved a dozen hours" ones. Thanks again.
for debug async action use Chrome/Network response tab, here you always can see whats wrong with your server response.
Also keep in mind, a single error in your js and all may fail silently - even an initial console.log statement on the first line. Start with only a console.log statement in your js file, then slowly add pieces back until the console.log statement doesn't appear - which means there is an untracable (in rails) bug somewhere in the latest code you pasted back.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.