你好,这里有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;',这给了我不想要的结果。任何帮助将不胜感激。感谢!!!
答案 0 :(得分:1)
也许您需要在 upvote.js.erb 中使用 @topic 而不是主题。但是,您将更改所有 $(“#ajaxed”)。您需要设置特定于各个主题的DOM ID。