Javascript 在ajax调用期间,在rails中呈现或重定向_到的问题
我试图在rails中使用ajax请求(为表单设置remote::true)重定向。这就是我面临的问题 在控制器中,我有: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
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
对于这两种情况。不知道为什么。