替换:onclick => raails 3.1中check_box_tag的remote_function

时间:2013-08-31 21:05:54

标签: javascript jquery ruby-on-rails ajax

我现在仍在努力清理我的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的彻底检查。

0 个答案:

没有答案