我目前正在尝试使用Rails编程我的第一个ajax接口。使用ajax更新行状态
该应用程序当前显示一个填充了列表项的表。用户必须批准或拒绝每个列表项。我目前在每行末尾都有一个编辑链接,显示可以批准列表项的表单。
我想使用复选框而不是编辑链接。当用户点击复选框时,我想用状态,用户名和日期/时间来更新数据库,而不用离开这个页面。
- 我应该遵循哪些步骤?
- 我可以使用复选框还是我只限于按钮 ?
- 我应该使用什么xxx_remote帮助器?
- 如何使用ajax调用的结果更新复选框状态?
我目前正在尝试使用Rails编程我的第一个ajax接口。使用ajax更新行状态
该应用程序当前显示一个填充了列表项的表。用户必须批准或拒绝每个列表项。我目前在每行末尾都有一个编辑链接,显示可以批准列表项的表单。
我想使用复选框而不是编辑链接。当用户点击复选框时,我想用状态,用户名和日期/时间来更新数据库,而不用离开这个页面。
我不认为复选框是你正在寻找什么的正确控制。 你说你希望用户能够批准或拒绝项目,这意味着你有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>
...
在你的控制器
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 ...
我刚刚更新了我的应用程序。它工作得很好! – hectorsq 2008-10-14 19:02:13
这是由安德鲁提出的解决方案评论,
我不得不写的link_to_remote
PARAMS像这样的功能
link_to_remote 'reject', :url => {:action => :reject, :id => item.id, :method => :post}
此外,要添加新的行动,你的routes.rb如果即
map.resources :items, :member => {:accept => :post, :reject => :post}
我应该使用的observe_field您正在使用RESTful资源 ? – hectorsq 2008-10-14 03:44:14
您也可以直接编辑自己的问题,不需要在评论中添加内容。 – Tomalak 2008-10-14 04:56:36