在rails中打开jquery弹出窗体以显示注释并创建注释

时间:2011-09-29 17:28:24

标签: jquery ruby-on-rails ruby ajax

我通过has_many关联将标准注释控制器附加到我的项目中。

我有一组显示最新评论的行。

当用户点击显示的评论时(假设他们点击标题),那么我想要

1)打开一个弹出窗口显示  a)评论提交表格 b)在评论表格下方,列出与项目相关的所有评论。

我很难让弹出窗口工作,然后用上面的1和2填充弹出窗口。

当我提交hte表单时,我希望它使用相同的设置刷新弹出窗口(新评论表单和下面现有评论列表。

我想我可以用jquery和rails来做到这一点,但不知道怎么做。我正在使用jquery-rails。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

听起来你想在你的Rails中使用一点AJAX。 Rails不显眼的JavaScript和AJAX功能允许您在不重新加载页面的情况下将远程视图加载到弹出窗口中,我认为您可能想要做的是将包含评论编辑/显示组合布局的远程视图加载到弹出窗口中。然后在对话框关闭后让AJAX更新主页面。

我将从using unobtrusive JavaScript with AJAX with Rails 3上的这个简短教程开始,然后查看我从Facebox了解到的this post that asks a question related to yours

祝你好运!

答案 1 :(得分:1)

首先,您可以查看JQuery dialog demo - 在对话框中放置一个表单并使用ajax(remote => true)提交,如果成功则关闭对话框。 Evan的答案将为您提供更漂亮且最终更好的解决方案(与许多其他类似灯箱的宝石一样),但使用jquery对话框可能是最简单的启动方式

答案 2 :(得分:0)

我和Facebox一起去了,两个答案都很好,谢谢。 但是我有以下问题:有什么想法吗?

使用Facebox,当我将它用于('#facebox .content')选择器时,我会收到原始文本。它适用于('#facebox')('#facebox .popup')。你们遇到过这个吗?通过原始输出,我的意思是:

$('#facebox .content').html("
\n Hello from box div\n<\/div> ");

这就是盒子里出现的内容。并且只针对.content选择器!

在application.js中的

我有:

$('a[rel*=facebox]').facebox(function($) {
   $.getScript(this.href);
});

在我的控制器中:

 respond_to do |format|
    format.html # show.html.erb
    format.xml  { render :xml => @project }  
    format.js {render :layout => false} 
  end        

在我的show.js.erb中:

$('#facebox .content').html("<%= escape_javascript(render("spaces"))%>");