Ajax Rails控制器在保存模型之前发送js响应

Ajax Rails控制器在保存模型之前发送js响应,ajax,ruby-on-rails-3,Ajax,Ruby On Rails 3,我有一个Rails控制器,它通过POST更新模型,并发送js响应来相应地更新视图 但是,响应会在保存模型之前发送,并且不会正确显示 我的控制器: def reload_regional_groups_ajax @shown_regional_groups = RegionalGroup.limit(4) @map_data = RegionalGroup.all.to_gmaps4rails if params[:exec] == "join" if current_us

我有一个Rails控制器,它通过POST更新模型,并发送js响应来相应地更新视图

但是,响应会在保存模型之前发送,并且不会正确显示

我的控制器:

def reload_regional_groups_ajax

  @shown_regional_groups = RegionalGroup.limit(4)
  @map_data = RegionalGroup.all.to_gmaps4rails

  if params[:exec] == "join"
    if current_user.can_join_new_group?
      @regional_group_membership = RegionalGroupMembership.new({:user_id => current_user.id, :regional_group_id => params[:reg_id]})
      @regional_group_membership.save
    else
      raise t("view.regional_group.membership.create.limit")
    end

  elsif params[:exec] == "remove"
    @regional_group_membership = RegionalGroupMembership.where("user_id = ? and regional_group_id = ?", current_user.id, params[:reg_id])
    RegionalGroupMembership.destroy(@regional_group_membership) 
  elsif params[:search]
    @shown_regional_groups = RegionalGroup.where("name LIKE ? OR post_code LIKE ?", '%'+params[:search]+'%', params[:search]+'%')
    @map_data = @shown_regional_groups.to_gmaps4rails  
  end

  @regional_groups_user = current_user.regional_groups

  respond_to do |format|
    format.js
  end
end
@user = User.find(current_user.id)
js文件只重新加载一些部分

我还尝试将if@model.save放在“respond_to”块之前,但结果是一样的


我已经记录了响应,只有使用代码的“搜索”选项,视图才会更新,因为它不会更新任何内容。

似乎所有问题都出现在
当前用户变量中,该变量包含登录用户(由Desive设置)。它受缓存的影响

解决方案是在控制器中添加以下内容:

def reload_regional_groups_ajax

  @shown_regional_groups = RegionalGroup.limit(4)
  @map_data = RegionalGroup.all.to_gmaps4rails

  if params[:exec] == "join"
    if current_user.can_join_new_group?
      @regional_group_membership = RegionalGroupMembership.new({:user_id => current_user.id, :regional_group_id => params[:reg_id]})
      @regional_group_membership.save
    else
      raise t("view.regional_group.membership.create.limit")
    end

  elsif params[:exec] == "remove"
    @regional_group_membership = RegionalGroupMembership.where("user_id = ? and regional_group_id = ?", current_user.id, params[:reg_id])
    RegionalGroupMembership.destroy(@regional_group_membership) 
  elsif params[:search]
    @shown_regional_groups = RegionalGroup.where("name LIKE ? OR post_code LIKE ?", '%'+params[:search]+'%', params[:search]+'%')
    @map_data = @shown_regional_groups.to_gmaps4rails  
  end

  @regional_groups_user = current_user.regional_groups

  respond_to do |format|
    format.js
  end
end
@user = User.find(current_user.id)
以及删除控制器和视图中对当前用户的任何引用