好的,所以我有我正在使用的应用程序的这种方法,它可以在生产中工作。我的问题为什么会这样?这是新的 Ruby 语法吗?
def edit
load_elements(current_user) unless current_user.role?(:admin)
respond_to do |format|
format.json { render :json => @user }
format.xml { render :xml => @user }
format.html
end
rescue ActiveRecord::RecordNotFound
respond_to_not_found(:json, :xml, :html)
end
rescue
在方法中时不需要绑定到显式begin
,这就是定义语法的方式。有关示例,请参阅此处的#19和此SO问题,以及上面的欺骗。
救援可以单独工作。 不需要总是开始和结束。
您可以使用单行形式的救援,以便在行上的其他内容出错时返回一个值:
h = { :age => 10 }
h[:name].downcase # ERROR
h[:name].downcase rescue "No name"
rescue
单词是方法定义的一部分
但在控制器中最好用rescue_from
来挽救错误
试试这个
def edit
begin
load_elements(current_user) unless current_user.role?(:admin)
respond_to do |format|
format.json { render :json => @user }
format.xml { render :xml => @user }
format.html
end
rescue ActiveRecord::RecordNotFound
respond_to_not_found(:json, :xml, :html)
end
end