1

既然我已经将它升级到 Rails 3.1,我仍在努力清理我的 Rails 应用程序中的失败测试。

我的应用程序中有一个消息传递功能,允许客户和提供者就他们的项目相互交换私人消息。

在他们的收件箱中,用户会看到一个消息列表和每个消息旁边的复选框。如果他们选中复选框,我有一些 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 } )) %>

当然,remote_function 在 Rails 3.1 中消失了,我应该用某种不显眼的 javascript 方法替换这段代码。大多数教程都解释说 using: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 的彻底检修。

4

0 回答 0