我正在尝试在 Rails 中使用 ajax 请求(为表单设置远程::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
}
});
当我单击提交(这是一个 ajax 请求)时,用户的总金额为 0.0(这是必需的),我得到验证错误,这是预期的行为(并且显示验证错误,这是 else 部分javascript)。现在我输入金额为 1.0 并单击提交(这也是一个 ajax 请求)。它不会出现在 javascript 中的 if 部分。
我在这里做错了什么?