我正在尝试使用 javascript/ajax 重新排序表格。我有javascript工作
javascript
var ajax_header = function(e) {
alert('order_by')
var header = $(this).attr('id')
$.post('/users', {sort_by: header, order_by: order_by});
if (order_by === "ASC")
order_by = "DESC"
else
order_by = "ASC"
}
$('.ajax-header').dblclick(ajax_header)
这需要 javascript 全局将顺序从 ASC 更改为 DESC 并再次返回并点击用户控制器索引操作的帖子。这会导致 @users 被重新排序。我遇到的问题是我不知道如何让表格重绘。我可以只使用 rails 来做到这一点,但我想更好地使用 rails 学习 AJAX,而且我发现文档写得不是很好。
用户控制器
def index
if !params[:sort_by].nil? && !params[:order_by].nil?
@users = User.order("#{params[:sort_by]} #{params[:order_by]}").paginate(page: params[:page])
respond_to do |format|
format.js {}
end
else
@users = User.paginate(page: params[:page])
end
结尾
绘制的视图
<% provide(:title, 'All users') %>
<% if signed_in? && !current_user?(@user) %>
<h1>All users</h1>
<%= will_paginate %>
<table id="user_table" border="1">
<tr>
<th>Avitar
<th id="name"class="ajax-header">Name
<th id="email" class="ajax-header">Email
<th id="accepted" class="ajax-header">Accepted
<th id="admin" class="ajax-header">Admin
<th>Delete
</tr>
<ul class="users">
<%= render @users%>
</ul>
</table>
<%= will_paginate %>
<% else %>
Only an admin can view this page.
<% end %>
上面的这个视图是绘制的。<%= render @users%> 调用部分并绘制出表格的其余部分。
正如我所说,查看日志我正确地点击了用户控制器,但我只是不知道如何强制该渲染重绘。我可以在rails中做到这一点,但我想练习我的js。