Javascript不会更新div rails 4

时间:2015-07-02 01:10:24

标签: javascript jquery ruby-on-rails ajax

你好,这里有4个新手。我似乎无法获得ajax来更新视图。我很茫然。单击视图中的+1链接时,我可以弹出警告,但即使数据库正在更新,我也无法让视图更新(显示投票)带有id =“ajaxed”的范围。我已经阅读了ajax上的rails指南,并在youtube上看了大约6个关于如何做到这一点的视频,它似乎对我而言对我不起作用。这是我的HTML:

    <tbody>
<% @topics.each do |topic| %>
  <tr>
    <td><%= topic.title %></td>
    <td><%= topic.description %></td>
    <td><span id="ajaxed"><%=pluralize(topic.votes.count, "vote")%></span></td>
    <td><%= link_to "+1",  upvote_topic_path(topic), id: "upvote", remote: true, method: :post%></td>
    <td><%= pluralize(topic.downvotes.count, "downvote") %></td>
    <td><%= link_to "-1", downvote_topic_path(topic), method: :post %></td>
    <td><%= link_to 'Show', topic %></td>
    <td><%= link_to 'Edit', edit_topic_path(topic) %></td>
    <td><%= link_to 'Destroy', topic, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>

这是我的控制器:

def upvote
  @topic = Topic.find(params[:id])
  @topic.votes.create
  #redirect_to topics_path
  respond_to do |format|
    format.html { redirect_to topics_path }
    format.js
  end
end

这是我的upvote.js.erb:

    $('#ajaxed').text('<%=pluralize(topic.votes.count, "vote")%>');

顺便说一下,我在upvote.js.erb上做的任何其他形式的javascript或jquery似乎都有效,它只是不会更新我的'#ajaxed'范围。我也试过.html甚至是直接的js document.getElementById(“ajaxed”)。innerHTML ='&lt;%= pluralize(topic.votes.count,“vote”)%&gt;',这给了我不想要的结果。任何帮助将不胜感激。感谢!!!

1 个答案:

答案 0 :(得分:1)

也许您需要在 upvote.js.erb 中使用 @topic 而不是主题。但是,您将更改所有 $(“#ajaxed”)。您需要设置特定于各个主题的DOM ID。