我目前正在尝试使用Rails编写我的第一个ajax接口。
应用程序当前显示一个填充了列表项的表。用户必须批准或拒绝每个列表项。我目前在每行的末尾都有一个编辑链接,显示一个表单,我可以在其中批准列表项。
我正在考虑使用复选框而不是编辑链接。当用户单击复选框时,我想用状态,用户名和日期/时间更新数据库而不离开此页面。
答案 0 :(得分: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>
...
在您的控制器中
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 ...
答案 1 :(得分:1)
这是对安德鲁提出的解决方案的评论,
我必须编写link_to_remote
这样的函数的参数
link_to_remote 'reject', :url => {:action => :reject, :id => item.id, :method => :post}
另外,如果您使用的是restful资源,请记住向routes.rb添加新操作 即。
map.resources :items, :member => {:accept => :post, :reject => :post}