使用ajax更新行状态

hec*_*rsq 2 ajax ruby-on-rails

我目前正在尝试使用Rails编写我的第一个ajax接口.

该应用程序当前显示一个填充了列表项的表.用户必须批准或拒绝每个列表项.我目前在每行的末尾都有一个编辑链接,显示一个表单,我可以在其中批准列表项.

我正在考虑使用复选框而不是编辑链接.当用户单击复选框时,我想用状态,用户名和日期/时间更新数据库而不离开此页面.

  1. 我应该遵循哪些步骤?
  2. 我可以使用复选框还是仅限于按钮?
  3. 我应该使用什么xxx_remote助手?
  4. 如何使用ajax调用的结果更新复选框状态?

And*_*rew 5

我不认为复选框是您正在寻找的正确控件.您说您希望用户能够批准或拒绝项目,这意味着您有3种状态:未处理,已批准和已拒绝.复选框仅支持2种状态:关闭和打开

我会使用两个链接接受并拒绝,然后执行如下操作.

在你看来:

...
<tr id="item1">
  <td>Accept or Reject</td>
  <td>
    link_to_remote 'accept', :action => :accept, :id => 1, :method => :post
    link_to_remote 'reject', :action => :reject, :id => 1, :method => :post
  </td>
</tr>
...
Run Code Online (Sandbox Code Playgroud)

在你的控制器中

def accept
  item = Item.find(params[:id])
  item.accept
  respond_to do |want|
    want.js {
      render :update do |page|
        page << "$('item_#{item.id}').cells[0].innerHTML = 'Accepted'"
        ...include other updates you need to make to your row...
        page.visual_effect :highlight, "item_#{item.id}"
      end
    }
  end
end    
... similar for reject method ...
Run Code Online (Sandbox Code Playgroud)