2010-12-23 72 views
1

我正在学习Ruby on Rails,对于我的应用程序的控制器 - 模型 - 视图关系如何工作,我感到非常困惑。RoR-如何使用div onclick在页面的单独区域渲染结果?

我现在所拥有的是一张满载用户评论(帖子)的表格。我想要做的是让用户点击评论以在单独的面板中查看更多信息(即其他数据库字段最初未显示,例如发布评论的人的user_id)。

在我_post.html.erb,我有这样的:

<div class="post" id="<%= post.post_id %>" onclick = ?? > 
<p>post.text</p></div> 

应该去什么的onclick?我需要一种方法让onclick调用可以加载更多信息的帮助程序/控制器方法,然后将其放入另一个div中的页面上(我尝试过使用控制器和帮助程序来调用JavaScript,将html插入到网站,但似乎比它应该更混乱)。根据我的理解,我应该创建一些处理html实际显示的部分_postdetails.html.erb文件,但我不知道如何指定部分在页面中的位置。

任何帮助将不胜感激,谢谢!

回答

2

你可以通过使用Rails助手或者自己编写AJAX调用来实现你想要的。

我个人使用jQuery手动编写我所有的AJAX调用。 您也可以使用随Rails提供的Prototype

这就是说你可以做。

在您的JS文件:

$("div.some-class").click(function() 
{ 
    $.ajax(
    { 
     url:"url/to/controller/action", 
     type:<GET>/<POST>, 
     data://If you wish to sent any payload 
    }); 
}); 

在你的控制器:

def some_action 
    #some computation 
    render :update do |page| 
    page["id_of_div_to_be_refreshed"].replace_html :partial => "some_partial" 
    end 
end