有弹出框,其中包含新用户的表单。它是远程提交的。如果@ 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
并且create.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');
}
还有一个重要的时刻,这让我非常困难 - 与其他剧本分开。 我的意思是,如果我删除了其他部分和@ user.save - 它会按预期重定向。
任何帮助表示赞赏。
答案 0 :(得分: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模板都使用其代码部分。