这里介绍的有用且有效的解决方案的基础上,我也试图修复更新回调。

问题是,即使此回调是由成功的update操作触发的,我尝试从中提取数据的特定unit始终是旧的缓存版本。

// callback triggered by the update action

$('.best_in_place').bind("ajax:success", function () {
   ...
    console.log(unit.duration);
    // which is exactly the same as
    console.log(<%= Unit.find(unit.id).unit_users.pluck(:duration).sum %>);
    // and both print the OLD duration val instead of the updated val which is in the database
});

和unit_users_controller代码...

  def update
    @unit = @unituser.unit

    respond_to do |format|
      if @unituser.update(unit_user_params)
        @unit.reload
        logger.info('-----------------------------------------------------------------')
        logger.info('@unit.duration in the controller is ' + @unit.duration.to_s) # which is the correct value
        logger.info('-----------------------------------------------------------------')
        gon.unit_duration = @unit.duration # an experiment which didn't work for me
        format.json {respond_with_bip(@unituser) }
      else
        # format.html { render :action => 'edit' }
        format.json { respond_with_bip(@unituser) }
      end
    end
  end

我已经尝试了几个版本的unit.reload ,但没有任何帮助。 也许我把它放错了地方?

#1楼 票数:1

这与缓存无关。 在将JavaScript发送到客户端之前,您的Ruby代码在服务器端进行了评估,并且仅在AJAX请求发生之前就进行了一次评估。

客户永远不会看到这一行:

console.log(<%= Unit.find(unit.id).unit_users.pluck(:duration).sum %>);

客户将看到的所有内容如下:

console.log(32); // or whatever the sum is

您不能在此处使用<%= %> 这将始终为您提供原始价值。 相反,您需要将新值发送到客户端以响应AJAX请求。

#2楼 票数:1 已采纳

我前段时间做过的这是我的代码,也许它将对您有所帮助:

Javascript:

$(document).ready(function() {
  $('.price_bind').bind("ajax:success", function (event, data, status, xhr) {
      var parsed_data = jQuery.parseJSON(data);
      $(this).text(parsed_data.newprice);
      $(this).parentsUntil('body').find(".totalpricep span").text(parsed_data.totalprice);
  });
}

视图:

<%= best_in_place detail, :price, :classes => 'price_bind', :path => purchase_detail_path(@purchase, detail)%>

控制器:

 def update
    respond_to do |format|
      if @detail.update_attributes(params[:detail])
        @n=@detail.mk_bal
        @r=false
        if @detail.purchase != nil
          @p=@detail.purchase.totalprice
        if params[:detail]['status'] && @purchase.step==1
          @remdet = @purchase.details.where(:step => 1, :status => false)
          if @remdet.empty?
            @purchase.update_attribute(:step, 2)
            @r=true
          end  
        end
        else
          @p=nil
        end
        format.html { redirect_to @detail, notice: 'Detail was successfully updated.' }
        format.json { render :json => {:newprice => @n, :totalprice => @p, :newstatus => @detail.status, :refresh => @r}}
      else
        format.html { render action: "edit" }
        format.json { render json: @detail.errors, status: :unprocessable_entity }
      end
    end
  end

  ask by dwilbank translate from so

未解决问题?本站智能推荐:

1回复

如何在Ruby中实现对象的可编辑字段?

我需要找到一种无需更新页面即可编辑任务的方式。 也许有人知道该怎么做? 我知道它适用于Angularjs。 但是我确实没有找到任何针对我的信息。 单击某些任务时,可以编辑其内容。 有人可以帮忙吗?
1回复

就地编辑时间对象

我有一个应用程序,用于计划许多员工的工作班次。 我有一个Shift模型,其中将shiftstart和shiftend存储为Time对象。 我在页面上显示用户几天的页面上显示了Shifts 。 这个想法是,用户可以使用Best In Place gem在此表中直接编辑shiftstart
1回复

最佳就地:未捕获的TypeError:对象[object Object]的属性'jQuery'不是函数

我正在尝试根据我的一种观点实施最佳原地宝石。 但是,当我单击示例按钮时,什么也没有发生,Chrome浏览器会弹出错误- 更新您可以在此处查看示例-> https://fierce-meadow-1536.herokuapp.com/users/10/common_apps/6
2回复

无论如何,要使由Best_In_place管理的对象也成为链接?

我正在使用Best In Place宝石 。 这是我的对象的一个​​示例: 但是我要做的是将node.name属性显示为常规链接。 所以只是link_to node.name, node 。 我如何结合两者?
2回复

如何在模型中调用number_helper?

我正在使用best_in_place gem,并且总而言之,我无法在我的视图中调用此特定的助手,因为我必须在模型中调用自定义方法以自定义我希望输出的外观。 我认为这是电话: 这是我的Firm模型中的方法: 用户输入的数字不是100000000 ,而是100 。 所以我想拿
1回复

如何从github更新best_in_place版本

gryzzly被告知我更新从GitHub我best_in_place版本,为了解决这个问题: 复选框与图片 他告诉要从github更新,因为此修复程序尚未发布。 因此,我在Gemfile写道: 然后运行: bundle install 。 这不能解决我的问题: show
1回复

best_in_place gem不会更新关联的记录

我正在尝试从购物车中的订单更新属性。 为此,我想对best_in_place gem( https://github.com/bernat/best_in_place )使用就地编辑。 无论如何,一旦实施,它就不会在提交时更新记录。 这是我的看法: 这是我的控制器更新步骤:
1回复

Rails 5最好的地方,只是更新了一些 小号

这很奇怪。 我将“最佳位置” gem与无序列表结合使用,每个列表项都包含“最佳位置”助手。 列表中的第一项工作正常,但后续列表项有问题。 这是我的部分代码(views / _dash.html.erb): 以及关联视图中的代码: 列表中的第一项工作正常。 每个字段都显示