0

我正在尝试在 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 部分。

我在这里做错了什么?

4

1 回答 1

0

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

回调:https ://github.com/rails/jquery-ujs/wiki/ajax

于 2013-10-08T17:58:49.077 回答