我正在使用AJAX开发一个crud应用程序。我使用will_paginate来分页结果。我遇到的行为是,当我创建一条记录并在我的视图中显示该记录时,它会将记录添加到表中,但它不会将最后一条记录弹出到下一页。
删除时也会出现同样的情况。我猜测我需要在创建后再次渲染整个表格,但我不确定处理它的最佳方法。有什么想法吗?
页面加载时:
创建少量记录后:
这是来自我的控制器,视图和javascript的代码。我没有将表格包括在内。
视图:
<tbody id="payees">
<%= render @payees %>
</tbody>
<tfoot>
<tr>
<th colspan="5">
<%= will_paginate @payees, remote: true %>
</th>
</tr>
</tfoot>
</table>
create.js.coffee
$("<%= escape_javascript(render @payee )%>").prependTo("#payees")
$('#new_payee')[0].reset()
payees_controller
def index
@payees = Payee.all.paginate(:page => params[:page], :per_page => 9)
@payee = Payee.new
end
def create
@payee = Payee.new(payee_params)
respond_to do |format|
if @payee.save
format.html { redirect_to @payee, notice: 'Payee was successfully created.' }
format.js {}
format.json { render json: @payee, status: :created, location: @payee }
else
format.html { render action: "new" }
format.json { render json: @payee.errors, status: :unprocessable_entity }
end
end
end
修改
我能够通过在保存新记录后检索所有记录来使其工作。对此的警告是,它似乎是对数据库的不必要的查询。有更有效的方法吗?
控制器:
.
.
.
if @payee.save
@payees = Payee.all.paginate(:page => params[:page], :per_page => 9).order("created_at DESC")
format.html { redirect_to @payee, notice: 'Payee was successfully created.' }
format.js {}
format.json { render json: @payee, status: :created, location: @payee }
else
.
.
.
我更改了create.js.coffee:
$("#payees").html("<%= escape_javascript(render @payees )%>")
$('#new_payee')[0].reset()