给出以下控制器:
def create
if @mymodel.save
format.js
else
format.js { render :js => @mymodel.errors }
end
end
处理.JS错误响应的Rails方法是什么...我是否只为服务器错误创建了具有不同文件名的.js文件?
我是否在.js文件中添加IF ELSE?
感谢
答案 0 :(得分:8)
自从这个问题发布以来已经有一段时间了 - 但我只花了一段时间才弄明白这个问题。在网上找不到太多的帮助,所以:
解决方案是创建.js.erb文件 - 一个用于成功,一个用于失败。
def create
@foo = Foo.new(params[:foo])
if @foo.save
respond_to do |format|
format.html { redirect_to root_path }
format.js { render :action => "success"} #rails now looks for success.js.erb
end
else
respond_to do |format|
format.html { render :action => 'new'}
format.js { render :action => "failure"} #rails now looks for failure.js.erb
end
end
end
end
如果你没有指定文件名,那么rails会在两种情况下都寻找create.js.erb(因为format.js是从create中调用的)。在成功/错误情况下这不是很好,因为您希望每个方案具有不同的行为 - 因此通过:action属性覆盖文件名。