【发布时间】:2016-11-28 02:45:35
【问题描述】:
在我的应用程序中,我有可投票的帖子,您可以在其中通过 AJAX 投票,这工作正常,但我也想在通过 AJAX 投票时更新帖子的状态(是否是商定的里程碑)。状态部分:
_milestone.html.erb
<% if post.agreed? %> Agreed Milestone <% elsif post.milestone? %>
Proposed Milestone <% end %>
posts_controller.rb
def upvote
@post = Post.find(params[:post_id])
respond_to do |format|
format.html { redirect_to @post }
format.js
@post.upvote_by current_user
end
if @post.votes_for.up.size == count_users
@post.toggle! :agreed
end
end
upvote.js.erb
$('#voting-<%= @post.id %>').hide();
$('#agreed-<%= @post.id %>').html("<%= j render(partial: 'posts/agreed',
locals: {post: @post}) %>");
$('#milestone-<%= @post.id %>').html("<%= j render(partial: 'posts/milestone',
locals: {post: @post}) %>");
同意的部分是选民名单。
因此,当帖子达到一定数量的投票时,它会将其布尔值更改为 true。然后我想更新视图中的状态。我尝试将里程碑元素呈现为部分和其他几种方法,但 if 语句从未执行并且状态不会更新。
【问题讨论】:
-
您应该将 upvote.js.erb 添加到您的问题中,以便我们更清楚地了解您如何更新视图。
标签: jquery ruby-on-rails ajax