Javascript 在ajax调用期间,在rails中呈现或重定向_到的问题

Javascript 在ajax调用期间,在rails中呈现或重定向_到的问题,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,我试图在rails中使用ajax请求(为表单设置remote::true)重定向。这就是我面临的问题 在控制器中,我有: def create user = User.new user.attributes = params[:user] if user.save if request.xhr? flash[:notice] = "User successfully created" render js: %('#{user_url(user.id

我试图在rails中使用ajax请求(为表单设置remote::true)重定向。这就是我面临的问题

在控制器中,我有:

def create
  user = User.new
  user.attributes = params[:user]

   if user.save
    if request.xhr?
      flash[:notice] = "User successfully created"
      render js: %('#{user_url(user.id)}')
    end
  else
    if request.xhr?
      render partial: "form"
    else
      render action: 'new'
    end
  end
end
在模型中

class user
  validates :total_amount, presence: true, numericality: {greater_than: 0}
end
在视图中,javascript是:

$("#new_user").bind("ajax:success", function(evt, data){
if(data.length < 300){
    window.location.replace(data.replace(/['\s]/gi, '')); # on success rendering the url. 
  }
  else {
    $("#errors").html($(data)); # if there are any errors, i have a div tag around form, which will replace the form html
  }
});
$(“新用户”).bind(“ajax:success”,函数(evt,数据){
如果(数据长度<300){
window.location.replace(data.replace(/['\s]/gi',);#成功呈现url时。
}
否则{
$(“#errors”).html($(data));#如果有任何错误,我在表单周围有一个div标记,它将替换表单html
}
});
当我单击submit(这是一个ajax请求)将用户的总金额保留为0.0(这是必需的)时,我得到了验证错误,这是预期的行为(并且显示了验证错误,这是javascript中的else部分)。 现在我将金额输入为1.0并单击submit(这也是一个ajax请求)。它不涉及javascript中的if部分


我做错了什么

不应检查数据的长度,而应使用
ajax:error
ajax:success
作为两个不同的回调。错误回调显示错误,成功重定向


回调:

它的触发
ajax:success
对于这两种情况。不知道为什么。