编辑#2
在我看来,我应该能够使用 javascript 来 JSON 解析respond_with_bip(@buildingTour)
返回的任何内容,因为那是我需要的更新对象(我需要访问 的更新值@buildingTour.monthly
)。但是,当我尝试解析它时,我没有运气。我读过一些关于respond_with_bip 破坏JSONParse 的内容,所以也许这就是正在发生的事情。
如果有人可以帮助我解析@buildingTour 以获取每月属性(即,向我展示javascript),将不胜感激。
编辑
@MikeKijewski - 澄清一下,我的视图是一个显示视图,即我们只处理一行。我知道您所指的 SO 文章是处理具有多行的表,这有点棘手。我不明白为什么我的控制器中的“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();
best_in_place 更新两个相关字段(sqft 和 rentrate)时使用,然后显示第三个字段(每月)的适当值。
我best_in_place
在我的 rails 应用程序中使用(用于就地编辑值 sqft 和 rate),它工作得很好,但有一个例外:
我的模型中有一个计算属性,称为monthly
. 当我用 a 更改值时best_in_place
,我需要monthly
在页面上重新计算和更新该值。
这是monthly
我模型中的代码:
def monthly
if sqft && rate
monthly = (sqft * rate) / 12
end
end
这是我认为的代码片段(这是我要更新的文本 - 它位于 ID 为“rental-details”的跨度内):
<strong><%= number_to_currency(@buildingTour.monthly, :precision => 0) %></strong>
这是我在进行best_in_place
更改时识别出的javascript,然后理论上更新上面的值:
$('.best_in_place').change(function() {
$.ajax({
success: function() {
$("#rental-details strong").text('<%= number_to_currency(@buildingTour.monthly, :precision => 0) %>');
}
});
});
所以代码都“工作”没有错误。. . 除了它正在拉动每月的旧值。我通过从 JavaScript 中删除来测试这一点number_to_currency
,果然当我更改其他值之一时,它会从页面上的值中删除货币格式(所以我知道 JavaScript 正在被触发并更新文本)。
我想可能是 JavaScript 启动得太快了(数据库还没有更新为 sqft 和 rate 的新值),但我尝试了几次更改 sqft 和 rate 的值,但每月的值从未更新。
那么无论如何<%= number_to_currency(@buildingTour.monthly, :precision => 0) %>
,JavaScript 的一部分是否只在页面加载时被调用一次?如果是这样,你如何强制它monthly
每次查询?
需要指出的一件事......monthly
不是表格中的一列building_tours
,我只是动态计算它。
感谢您对此问题的任何见解。我已经用谷歌搜索和stackoverflow了,他们都让我觉得我当前的代码应该可以工作。