目前用 Kaminari 分页插件,有时候页数比较多,想加上一个 Goto 直接跳转到某一页,但是不知道怎么实现。请指点一下。
刚刚又看了下 edit the partials in your app’s app/views/kaminari/ directory. 更改这个应该可以搞定,正在努力中。。。
也遇到这个需求。 我是模仿源码中的如下代码新建了一个 jump_tag 方法:
%w[first_page prev_page next_page last_page gap].each do |tag| eval <<-DEF def #{tag}_tag @last = #{tag.classify}.new @template, @options end DEF end
然后建立一个 app/views/kaminari/_jump_tag.html.erb 模板,配合 js 实现跳转或 ajax 请求。
@helloqidi 我做法 土一些 直接更改了:app / views / kaminari / _paginator.html.erb
在里面加了 goto 的语句
<%= paginator.render do -%> <nav class="pagination round"> <%= prev_page_tag -%> <% each_page do |page| -%> <% if page.left_outer? || page.right_outer? || page.inside_window? -%> <%= page_tag page -%> <% elsif !page.was_truncated? -%> <%= gap_tag -%> <% end -%> <% end -%> <%= next_page_tag -%> <% $id += 1 $id = 1 if $id > 100%> 直接到<input type="text" maxlength="5" size="3" id="<%= "page#{$id}" %>" />页 <input type="submit" onclick="<%= "page#{$id}()" %>" value="Go"/> <script type="text/javascript"> function <%= "page#{$id}()" %> { page = document.all('<%= "page#{$id}" %>').value ; total = <%= num_pages %> ; if(isNaN(page)) { alert('请输入一个数值!'); return; } else { page =parseInt(page); if(page < 1 || page > total) { alert('请输入一个在 1 和 ' + total + '之间的值!'); return; } } var new_link = page; window.location.assign(new_link) } </script> </nav> <%- end -%>
<% $id += 1 $id = 1 if $id > 100%>
关于这个 "page#{$id}" $id 是个全局变量,使用一次 +1
因为一个页面里面可能存在多个 分页,就可能存在多个 goto,保持 id 不一样。
<input type="text" maxlength="5" size="3" id="<%= "page#{$id}" %>" />