Rails:两个不同的Ajax功能不能在同一个按钮上一起工作

时间:2012-02-29 19:52:44

标签: ruby-on-rails ajax ruby-on-rails-3 jquery

建立一个由JS文件显示/隐藏的评论系统,但同时该评论系统由用作视图计数器的相同按钮控制。两者都由两个不同的Ajax文件运行,但如果没有其他的不工作,这两个文件都无法运行。任何帮助都感激不尽!谢谢!

编辑 HTML未使用@micropost并使用micropost,因为@micropost在不同的部分中定义。对于那些熟悉Michael Hartl的Rails教程的人,我已经用他的代码和教导完成了这个微博。我知道这会搞砸ajax的所有内容,它会带回@micropost而不是micropost,但它不会让我不在{a 1}}中放入@所以我迷失了

评论按钮HTML

<span class='count-<%= micropost.id%>'>
<a href="/microposts/<%=micropost.id %>/upview" data-remote='true' class='CommentTitle' data-micropost='<%= micropost.id %>'>Comments</a>
</span>

评论更改计数器的Ajax

$("#count-<%=@micropost.id%>").html('<%="#{@micropost.view_count}"%>');
$(".count-<%=@micropost.id%>").html('<a href="/microposts/<%=@micropost.id%>/upview" data-remote="true" class="CommentTitle" data-micropost="<%= @micropost.id %>">Comments</a>');

评论按钮幻灯片切换JS

$(".CommentTitle").click(function(){
var title = this;
var postID = $(this).data('micropost');
$("#CommentContainer-" + postID).slideToggle("slow", function(){ 
$(".CommentTitle", title).html($(this).is(":hidden") ? "Comments" : "Comments");  
}); 
});

1 个答案:

答案 0 :(得分:1)

假设:当用户点击html中的链接时,他们会向upview内的MicropostsController操作发送请求。

在该控制器操作方法中,您可以分配实例变量...

@this_micropost = Micropost.find(params[:id]) # assuming you're RESTful, which it looks like

然后,在upview.js.erb内,您可以将该实例变量用于任何您想要的内容。

希望这有帮助!