部分渲染为AJAX无法正常工作

我使这个部分使用AJAX:

<% if current_user.profiles_shown_video.where("video_id = ?", params[:id]).count == 0 %> <p class="none"> None </p> <% else %> <ul class="shown_users_list"> <% current_user.profiles_shown_video.where("video_id = ?", params[:id]).each do |p| %> <li><%= link_to image_tag(p.photo.url(:thumbnail)), profile_path(p), :class => "feed_image"%> <%= link_to "#{p.user.name}", profile_path(p), :class => "normal squeeze" %> <%= link_to image_tag("/images/facebox/closelabel.gif"), showable_video_path(ShowableVideo.find_by_user_id_and_profile_id_and_video_id(current_user, p, @video)), :method => :delete, :remote => true, :class => "showable_video_delete" %></li> <% end %> </ul> <% end %>

出于某种原因,第一个if语句总是被评估为真,即使它不应该。 换句话说, <p class="none"> None </p>总是被显示。 如果我刷新页面,它就会被纠正。 为什么当AJAX渲染的这一部分的if语句没有被正确评估? 我该如何解决这个问题?

这里的破坏作用:

def destroy @showable_video = current_user.showable_videos.find(params[:id]) @showable_video.destroy respond_to do |format| format.html {redirect_to :back} format.js end end

这是在destroy.js.erb。 它使得含以上代码的第一个块的部分:

$("#shown_users_div").html('<%= escape_javascript(render("showable_videos/shown_users")) %>')

--------------解决方案-------------

ActiveRecord的缓存相关的对象。 运行后@showable_video.destroycurrent_user (本身可能被缓存),仍会有@showable_video在内存中,所以集合将非空。 创建,更新或删除数据库记录后,你必须运行:

current_user.reload

因此,它重新加载从数据库相关的对象。

分类:jQuery的 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.627 (s). 10 q(s)