不引人注目的javascript rails 3.1多个表单,同一页面

我对同一页面中的多个表单感到很疯狂

当有一个独特的表单时,每个工作正常,你可以识别这个表单或列的唯一ID或唯一类…等。

但是当我在同一页面中多个表单时,我的大问题又回来 。 我想在create.js.erb中创建新注释时渲染部分create_index我有:

$("").hide().prependTo(".comments_column").fadeIn(1500); 

问题是,如果表单上面有许多列与.comments_column类,那么注释会在具有相同类的每个列中呈现。

jquery中的一个例子是:

http://jsfiddle.net/minitech/aC92Q/8/

对于rails 3.1,请不要使用此示例。 如果我把那个javascript放在create.js.erb中 。 第一次不显示创建的评论。

如果我只放在create.js.erb中:

 $("").hide().prependTo(".comments_column").fadeIn(1500); 

在包含类.comments_column的每个列中呈现部分。

我的问题是如何对rails 3表示我点击的表单或按钮仅在此列中呈现部分?

它固定的问题! 对于每个有这个问题的世界:

每个rails UJS AJAX调用提供六个可附加到的自定义事件:

 ajax:before – right before ajax call ajax:loading – before ajax call, but after XmlHttpRequest object is created) ajax:success – successful ajax call ajax:failure – failed ajax call ajax:complete – completion of ajax call (after ajax:success and ajax:failure) ajax:after – after ajax call is sent (note: not after it returns) 

在我的情况下,我将在我的提交按钮上为ajax:success事件添加一个事件监听器:

 $('.comment_box form').bind('ajax:success', function() { $("<%= escape_javascript(render(:partial => 'create_index'))%>").hide().prependTo($(this).parents(".comments_column").eq(0)).fadeIn(1500); }); 

非常非常重要的调用自定义事件或另一方不正常工作。