Javascript 当我使用best_in_place进行更改时,我希望页面上的另一个文本值得到更新 编辑#2
在我看来,我应该能够使用javascript解析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),我将不胜感激 编
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) %>');
}
});
});