不显眼的 JavaScript Rails 3.1 多种形式,同一页面

发布于 2024-12-24 19:06:29 字数 977 浏览 0 评论 0原文

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

当有一个唯一的表单并且您可以识别该表单或列的唯一 ID 或唯一类时,一切正常。

但是当我同一页面中有多个表单时,我的大问题又出现了。我想在创建新评论时呈现部分 create_index ,在 create.js.erb 中我有:

$("<%= escape_javascript(render '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:

$("<%= escape_javascript(render 'create_index') %>").hide().prependTo(".comments_column").fadeIn(1500);

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

我的问题是如何对 Rails 3 说我点击的表单或按钮仅在此列中渲染部分内容?

I'm crazy with multiple forms in the same page.

every working fine when there is one unique form and you can identify the unique id or unique class of this form or column...etc.

But my big problem come back when I have multiple forms in the same page. I want rendered the partial create_index when I create a new comment, in create.js.erb I have:

$("<%= escape_javascript(render 'create_index') %>").hide().prependTo(".comments_column").fadeIn(1500);

The problem is that if there are many columns above forms with the class .comments_column the comment its rendered in every columns with the same class.

A example in jquery is this:

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

For rails 3.1 don't working this example. If I put that javascript in create.js.erb. The first time don't show the comment created.

If I put only in create.js.erb:

$("<%= escape_javascript(render 'create_index') %>").hide().prependTo(".comments_column").fadeIn(1500);

rendered the partial in every column that contain the class .comments_column.

My question is How say to rails 3 the form or button that I am hit for render the partial only in this column?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

御弟哥哥 2024-12-31 19:06:29

问题已解决!对于每个有这个问题的世界:

每个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); 
}); 

:非常重要的是调用自定义事件,否则对方无法正常工作。

The problem its fixed!. For every world that have this problem:

Each rails UJS AJAX call provides six custom events that can be attached to:

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)

In My case I'll add an event listener to the ajax:success event on My submit button:

$('.comment_box form').bind('ajax:success', function() {  

   $("<%= escape_javascript(render(:partial => 'create_index'))%>").hide().prependTo($(this).parents(".comments_column").eq(0)).fadeIn(1500); 
}); 

Its very very important call the custom events or the other side dont working fine.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文