将1添加到实例变量中,即部分实例,通过JQuery呈现。 Rails3中

时间:2011-02-11 15:14:34

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

嘿伙计们,所以我意识到这可能有点令人费解,但这是我的代码看起来像我想要做的:

#new.html.erb

<% @tag_counter = 0 %>

此处的Javascript代码,即单击特定按钮时,将部分_tag.html.erb附加到下面的div

#_tag.html.erb

<div id="tag-id-<%= @tag_counter %>">Div here</div>
<% @tag_counter = @tag_counter+1 %>

所以我遇到的问题是@tag_counter值没有改变。它保持为0并且每个附加的div具有相同的ID。知道我怎么能做这个工作吗?

3 个答案:

答案 0 :(得分:0)

每个_tag.html.erb由新的HTTP请求呈现,并且所有变量都独立于所有其他调用。另请注意,除了回调明确提供的内容之外,您的Ruby代码无权访问该页面,因此您无法检查页面上已有的内容。

在请求中包含一个计数器(来自JavaScript),在事后(也来自JavaScript)设置它,或者创建随机ID。

答案 1 :(得分:0)

看看这里:http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials

在3.4.7中,您将看到部分存在计数器,只需使用Rails方式。

答案 2 :(得分:0)

我做了类似的事情,虽然这可能不是您正在寻找的答案。

当有人在我的申请中投票时,我通过AJAX发出了信号。

$(".vote_link").live("click", function (){
    $.ajax({type: "GET", url: $(this).attr("href"), dataType: "script"});
    return false;
});

这会加载一个针对js文件的href,该文件说明了这一点:

== $(".event_#{@event.id}_score").html("#{ escape_javascript(@event.score.to_s)}");

该事件以其类的唯一ID为目标,而Jquery只处理交换数字,而不是像我认为的那样加载整个部分。