【发布时间】:2016-04-28 17:16:13
【问题描述】:
我有这个有事件的小应用程序。在我的事件索引视图中,我遍历所有事件并显示一些数据。在each 循环中,我有一个指向“支持”特定事件的链接,这是一个ajax 请求。由于某些原因,我的视图不会立即更新,但是当我再次单击“Upvote”时会更新。
这是我的“点赞”链接
<div id="upvote_link_<%= event.id%>">
<%= link_to('Upvote', upvote_event_path(event), method: :post, remote: true)%>
</div>
这是我的 upvote 方法,我在其中递增 votes 字段。
def upvote
@event = Event.find(params[:id])
Event.increment_counter(:votes, @event.id)
respond_to do |format|
format.js
end
end
接下来是我的upvote.js.erb,我用新值替换了旧的votes。
$('#upvotes_<%= @event.id %>').html("<%= escape_javascript (render 'upvote', event: @event )%>");
接下来是我的 _upvote.html.erb 部分替换旧的 votes 值。
<span style="font-family:MetaSerifOT-Book;font-size:13px;">
<%= pluralize(event.votes, "vote") %>
</span>
问题是,当我单击“Upvote”链接时,我的请求通过,并且事件模型中的 votes 字段得到更新,但视图不会更新,直到我再次单击 Upvote。我不确定发生了什么。有什么想法或建议吗?
更新
这是我设置 id 的地方:upvotes_<%= event.id %> 我已将Votes 计数隔离在一个部分内。
<div id="upvotes_<%= event.id%>">
<%= render 'upvote', event: event %>
</div>
【问题讨论】:
-
@rob 我已经更新了问题以显示我设置 id 的位置:
upvotes_<%= @event.id %>
标签: javascript jquery html ruby-on-rails ajax