Js.erb只渲染一次

时间:2011-03-27 12:42:35

标签: ruby-on-rails-3

我在隐藏的Div中有一个投票按钮,使用pirobox加载。触发链接是:

<div class="inliner"><a href="#vid_<%=c.id%>" rel="inline-1000-500" class="pirobox_gall1"><h5><%=c.title%></h5></a></div>

在隐藏的div中,我的投票按钮有以下内容:

<%=button_to 'Vote',vote_path(:format=>:js,:id=>c.id),:remote=>true%>

在控制器中我有:

def vote
        @video=Video.find(params[:id])
        @video.increment!(:votes)

        respond_to do |format|

           format.js  { render :layout=>false }
        end

    end

最后在我的js.erb中,我有:$('p#success_<%=@video.id%>').fadeIn('slow').delay(1000).fadeOut('slow');

当点击触发链接时,pirobox会加载隐藏的内容。当我点击投票按钮时,投票会增加,同时渲染js.erb文件。一切正常。 但是,现在我关闭了pirobox弹出窗口。然后再次触发它并单击投票按钮。投票字段增加,但js.erb未呈现:( 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

让我们清理一下你的代码;

您的按钮:

<%= button_to 'Vote', vote_path(c), :remote => true %>

你的控制器:

def vote
  @video = Video.find(params[:id])
  @video.increment!(:votes)
end

你的js:

$('#success_<%= @video.id %>').fadeIn('slow').delay(1000).fadeOut('slow');

现在运行Firebug并通过cosole跟踪你的ajax调用