首先 - 我已经阅读了 SO 上的所有其他线程,但都有相同的错误。他们都没有帮助我一点。
流动:
- 在新客户页面上,填写字段,单击保存
- 在 customer_controller 中触发方法来创建
将带有信息的 json 渲染回页面:
format.json {render :json => res.to_a }
页面获取数组:
数组[2] 新:851
这是一个格式正确的数组。
错误:
Uncaught TypeError: Cannot read property 'top' of undefined
溯源:
$.ajax({
type : "POST",
url : "/customers",
data : dataString,
dataType : "json",
success : function(data) {
console.log(data);
// data = data[0];
// console.log(data);
if (data[0] == 'error' || data[0] == 'i') {
$("#flash_message").addClass("alert-error");
$("#flash_message").html("<p>" + data[1] + "</p>");
$('html,body').animate({
scrollTop : $("#flash_message").offset().top
}, 'slow');
} else {
$("#flash_message").addClass("alert-success");
$("#flash_message").html("<p>" + data[0] + "</p>");
$('html,body').animate({
scrollTop : $("#flash_message").offset().top
flash_message 嗯?让我们在视图中查看:
<% flash.each do |key, value| %>
<div id="flash_message" class="alert alert-<%= key %>">
<%= value %>
是的,那里肯定有一个 flash_message id。
但是,我们正在使用布局 - 所以一定存在时间问题。AJAX 代码位于 admin.html.erb 布局中,我们正在完成来自 customer.html.erb 视图的新客户操作。客户控制器有:
layout 'admin', :except => [:show]
“show”不是我们在这里讨论的方法——我们使用的是“create”
Processing by CustomersController#create as JSON
那么为什么在血腥的大火中我们不知道“flash_message”是什么?