jquery-rails breaks kaminari?

2019-04-15 21:26发布

问题:

I updated my Rails 3.0.7 application to use kaminari 0.12.4 (up from 0.10.4) for pagination and jquery-rails 1.0.9 and it seemed to break pagination. I've regenerated the kaminari views since they are different but for some reason ajax isn't working.

<%= javascript_include_tag :defaults %>

is included. Which produces this in the browser:

<script src="/javascripts/jquery.js?1306353646" type="text/javascript"></script> 
<script src="/javascripts/jquery-ui.js?1306368501" type="text/javascript"></script> 
<script src="/javascripts/jquery_ujs.js?1306381513" type="text/javascript"></script> 
<script src="/javascripts/application.js?1290034766" type="text/javascript"></script>

In my view I have: <%= paginate @users, :remote => true %>

Which yields the following error:

ActionView::MissingTemplate (Missing template users/show with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:js, "application/ecmascript", "application/x-ecmascript", "/"], :locale=>[:en, :en]} in view paths "/home/epipheus/CodeWarehouse/praypeer/app/views", "/home/epipheus/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/kaminari-0.12.4/app/views"):

the following non-ajax version works just fine of course:

<%= paginate @users, :remote => false %>

So it seems like I have something wrong with jquery ujs? Please help me.

回答1:

Turns out that for jquery kaminari needs you to insert the following to say show.js.erb for example:

$('#microposts').html('<%= escape_javascript render(@microposts) %>');
$('.app-table-pager').html('<%= escape_javascript(paginate(@microposts, :remote => true).to_s) %>');

If you don't switch to jquery-rails/ujs -- out of the box, it doesn't seem you need this.



回答2:

I recently had problems with jquery-rails after update. I updated the gem via bundler, but it was not quite compatible with an existing jquery-rails files. After I ran "rails generate jquery:install" command, I did not see any more errors.