Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我使用best_in_place进行更改时,我希望页面上的另一个文本值得到更新 编辑#2_Javascript_Ruby On Rails_Best In Place - Fatal编程技术网

Javascript 当我使用best_in_place进行更改时,我希望页面上的另一个文本值得到更新 编辑#2

Javascript 当我使用best_in_place进行更改时,我希望页面上的另一个文本值得到更新 编辑#2,javascript,ruby-on-rails,best-in-place,Javascript,Ruby On Rails,Best In Place,在我看来,我应该能够使用javascript解析respond\u with_bip(@buildingTour)返回的任何内容,因为这是我需要的更新对象(我需要访问@buildingTour.monthly的更新值)。然而,当我试图解析它时,我没有运气。我读过一些关于respond_with_bip breaking JSONParse的文章,所以也许这就是正在发生的事情 如果有人能帮我解析@buildingTour以获得monthly属性(即,向我展示javascript),我将不胜感激 编

在我看来,我应该能够使用javascript解析
respond\u with_bip(@buildingTour)
返回的任何内容,因为这是我需要的更新对象(我需要访问
@buildingTour.monthly
的更新值)。然而,当我试图解析它时,我没有运气。我读过一些关于respond_with_bip breaking JSONParse的文章,所以也许这就是正在发生的事情

如果有人能帮我解析@buildingTour以获得monthly属性(即,向我展示javascript),我将不胜感激

编辑 @MikeKijewski-我只是想澄清一下,我的观点是一种表演观点,即我们只处理一行。我知道你提到的那篇文章是关于一个有多行的表的,这有点棘手。我不明白的是为什么我的控制器中的“respond_with_bip”没有返回我需要的东西。这是我的控制器:

  def update
    @buildingTour = BuildingTour.find(params[:id])

    respond_to do |format|
      if @buildingTour.update_attributes(params[:building_tour])
        format.json { respond_with_bip(@buildingTour) }
      else
        format.json { respond_with_bip(@buildingTour) }
      end
    end
  end
那么为什么我不能使用“respond_with_bip”返回的数据来更新页面上的字段呢

现在我只使用
location.reload()
每当有问题的两个字段(sqft和rentalrate)用best_in_place更新时,它就会显示第三个字段(每月)的相应值


我在rails应用程序中使用了
best_in_place
(用于就地编辑值sqft和rate),它工作得非常好,但有一个例外:

我的模型中有一个计算属性,名为
monthly
。当我用
最佳位置更改值时,我需要每月在页面上重新计算和更新该

以下是我的型号中每月<代码>的代码:

  def monthly
    if sqft && rate
        monthly = (sqft * rate) / 12
    end
  end
以下是我视图中的代码片段(这是我希望更新的文本-它位于id为“rental details”的范围内):

所以代码都“正常工作”,没有错误。除了它是拉旧价值的每月。我通过从JavaScript中删除
number\u to\u currency
来测试这一点,当我更改其他值之一时,它会从页面上的值中删除货币格式(因此我知道JavaScript正在被触发并更新文本)

我想可能JavaScript启动得太快了(而且数据库还没有更新sqft和rate的新值),但我尝试了几次更改sqft和rate的值,而每月的值从未更新

那么,JavaScript的
0)%>
部分是否只在页面加载时调用一次?如果是这样,您如何强制它每月查询一次

有一件事需要指出
monthly
不是
building\u tours
表中的一列,我只是动态计算


感谢您对这个问题的深入了解。我在谷歌上搜索和堆栈溢出了这一切,它们都让我觉得我当前的代码应该正常工作。

我最终创建了一个javascript函数,用于监视具有特定类(.best\u in\u place或类似内容)的元素进行更新,然后从控制器操作获取json响应(在您的例子中是BuildingTour?)并用包含更新的.monthly值的新表行替换表行。请参阅本文:


@bcb太好了。如果它有效,请务必接受答案。祝你好运!@MikeKijewsi我现在正在尝试。但是我对一些事情有点困惑,所以我正在编辑我的答案,并提供更多细节。@bcb不确定为什么使用bip进行响应不起作用。我从来没有让它起作用。因此,我通过将json对象与响应和手动刷新。尽管我最终没有实现此解决方案(我不想处理不使用respond_with_bip的后果,我的refresh non解决方案现在正在完成工作),但我相信它会起作用,因此我相信你的回答是正确的。谢谢!
<strong><%= number_to_currency(@buildingTour.monthly, :precision => 0) %></strong>
$('.best_in_place').change(function() {
    $.ajax({
      success: function() {
        $("#rental-details strong").text('<%= number_to_currency(@buildingTour.monthly, :precision => 0) %>');
      }
    });
  });