使用AJAX

时间:2016-05-19 16:04:06

标签: jquery ruby-on-rails will-paginate

我正在使用AJAX开发一个crud应用程序。我使用will_paginate来分页结果。我遇到的行为是,当我创建一条记录并在我的视图中显示该记录时,它会将记录添加到表中,但它不会将最后一条记录弹出到下一页。

删除时也会出现同样的情况。我猜测我需要在创建后再次渲染整个表格,但我不确定处理它的最佳方法。有什么想法吗?

页面加载时:

On Page Load

创建少量记录后:

After Creating A few Records

这是来自我的控制器,视图和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()

0 个答案:

没有答案