0

有一个弹出框,其中包含新用户的表单。它是远程提交的。如果@user.save,我使用 js 文件重定向,如果没有 - 只是刷新弹出框。刷新工作正常,但重定向是一个问题。

这是我的代码:

  def create
    @user = User.new(params[:user])
    @user.email=@user.email.downcase
    @user.guest=false
    if @user.save
      @status=true
      session[:user_id] = @user.id
    else
      @status=false
    end
    respond_to do |format|
      format.js{@status}
    end
  end

并创建.js.erb:

if(<%=@status %>) {
    window.location.replace("<%= j root_url %>")
}else {
    $('.new_user_popup').replaceWith("<%= j render :partial => 'users/form' %>");
    $('.new_user_popup').fadeIn('fast');

}

还有一个重要的时刻,让我非常困惑 -与其他脚本作品分开。 我的意思是,如果我删除 else 部分和 @user.save - 它会按预期重定向。

任何帮助表示赞赏。

4

1 回答 1

0

我不知道,这段代码有什么问题。实际上,在类似的情况下,几乎相同的逻辑工作得很好,我认为它与默认方法(如“create”)的 rails 默认行为有关。只是这样修复它:

 def create
    @user = User.new(params[:user])
    @user.email=@user.email.downcase
    @user.guest=false
    if @user.save
      @status=true
      render :action => 'redirect_user'
      session[:user_id] = @user.id
    else
      render :action =>'reload_box'
    end
  end

  def redirect_user
  respond_to do |format|
    format.js
  end
  end

  def reload_box
    respond_to do |format|
      format.js
    end
  end

每个 JS 模板都可以使用它的部分代码。

于 2013-05-03T21:48:58.940 回答