我现在仍在努力清理我的Rails应用程序中的失败测试,因为我已将其升级到Rails 3.1。
我的应用程序中有一个消息传递功能,允许客户端和提供者相互交换有关其项目的私人消息。
在用户的收件箱中,用户会看到一条消息列表,并在每个消息旁边显示一个复选框。如果他们选中了复选框,我会有一些js / ajax内联标记要删除的邮件并“放置”messages#add_remove_message/id
操作:
<%= check_box_tag('id', 'id', false, :onclick => remote_function( :url => { :action => :add_remove_message, :id => message.id, :method => :put } )) %>
当然,远程功能在Rails 3.1中消失了,我应该用某种不引人注目的javascript方法替换这个代码。大多数教程都解释了使用:remote => true
是一般的方法来摆脱remote_function,也许还有一些data-href
调用。但这似乎不适用于check_box_tag。
这里最好的方法是什么?我只想要一种ajax-y方式让用户轻松存档收件箱邮件,而无需重新加载页面。如果我可以保留现有的add_remove_message方法会很好,但如果它能带来更好的整体解决方案,我会高兴地放弃它而不是其他东西。
当前的add_remove_message方法如下所示:
def add_remove_message
add_remove_ids = Array.new
unless cookies[:add_remove].empty?
add_remove_ids = cookies[:add_remove].split('|')
end
if add_remove_ids.include? params[:id]
add_remove_ids.delete params[:id]
else
add_remove_ids << params[:id]
end
cookies[:add_remove] = add_remove_ids*'|'
render :nothing => true
end
这是来自之前从事此消息传递模块的自由开发人员的遗留代码。我并不喜欢它(虽然它的优点是我大部分时间都能理解它的作用!)
我很感激有关如何继续的建议,是否涉及语法的简单更改,某些jQuery插件或整个消息删除UI的彻底检查。