我正在开发一个Ruby on Rails web应用程序,其中有几个帖子列表。每篇文章将使用Ajax来加载他们的评论。为了将它们填充到正确的位置,我正在执行以下操作:Ajax on Rails - 我遇到问题
每个帖子都有一个div,其格式如下:id:<div id="my_div_<%= post.id %>"></div>
。所以,例如,如果post.id是12,那么id将是“my_div_12”。
我的控制器的动作看起来是这样的:
render :update do |page|
page.replace_html 'my_div_' + params[:post_id].to_s, :partial => 'my_comments_section_partial_path'
end
这工作正常只有当我在页面有一个职位只有一次。但在这个网站中,每个帖子可能会被列出不止一次,因为有几个列表(最新帖子,流行,上衣等)。他们都将有他们的评论部分显示。
现在的问题是,由于注释部分功能在部分视图内,因此它对每种类型的列表都是一样的(因为它是预期的),因此它不会区分div (因为它们将具有相同的post.id,并且因此具有相同的div的id)。
我现在的问题是:我怎么能解决这个问题?有没有更好的和不同的方式来做到这一点?
提前致谢!
编辑:
只是为了澄清我想要的东西,在几句话:
我想代码page.replace_html 'my_div_' + params[:post_id].to_s, :partial => 'my_comments_section_partial_path'
,以取代部分中EVERY DIV称为'my_div' + params[:post_id].to_s
(因为有可能是在同一个页面上使用相同的ID的多个div)。
你的控制器是什么样的?你说所有的div都有相同的ID? – Trip 2010-09-21 21:37:46
你想解决什么问题?给定的帖子将始终具有与显示在另一个小部件(或任何地方)中的相同帖子相同的评论。 – Eric 2010-09-21 22:46:36
我已经在同一页面的同一篇文章中找到了更多的地方。现在,每个帖子都有一个“注释”部分,当单击“显示评论”按钮时,显示(和加载)部分。在上面发布的控制器的操作中,我用帖子的评论替换了部分评论的div。所以,这将被替换为只有一个div(我有一个具有相同ID的div,每个帖子使用相同的id。例如:我在页面中显示#2两次,然后我会有两个divs与id =“div_post_2”)。所以,我想用相同的ID替换每个div中的评论结果。 – 2010-09-22 15:13:20