ruby - 有一串的ajax操作,其中几个可能会出错,请问怎么样才能优雅的处理
ringa_lee
ringa_lee 2017-04-22 08:55:54
0
3
1040

问题描述

现在在一个rails项目中我是想在页面中选中一系列的条目,然后利用ajax向后端传递这一系列条目的id,然后在数据库中更新这些条目中的一些字段内容

下面是我现在的实现代码

@qids = params[:qids]
@qids.each do |id| 
    question = Question.find_by(:id => id, :boxname => "un-matched".to_s)
    if question.nil?
        if Question.find_by(:id => id).update(:boxname => "un-matched".to_s)
        else
            render :json => {:status => "error", :msg => "database error cannot move question to target bucket"}
        end
    else
        render :json => {:status => "error", :msg => "question already exists in this bucket"}
    end
end
render :json => {:status => "ok"}

我现在的话就是在这一系列的更新操作中,假如有一次更新操作出错失败了,就直接返回error给前台了,之后的更新操作也不执行,想问下,如果我想即使有一些出错了,后面的更新操作也还照样执行,但是最后也能返回给前端页面是那几个id对应的条目的更新操作出错失败了,请问各位大大有优雅的解决方案吗?

ringa_lee
ringa_lee

ringa_lee

全員に返信(3)
小葫芦

レンダリング用のajaxパッケージを作成する
- response.error(msg)response.error(msg)
- response.success()
- response.warn()
省去json对象,调用 return response.error(msg) - response.success()
- response.warn()

json オブジェクトを省略して、return response.error(msg) を呼び出します🎜 これを行うと、if else のネストの一部が壊れる可能性があります。私は Ruby 構文に詳しくありませんが、どう思いますか?🎜
いいねを押す +0
刘奇

配列を使用して各 qid の更新結果を記録することができます (例: res = [{:qid => 1, :status => "success"}, {:qid => 2, :status => "success"}, {:qid => 3, :status => "fail"}, {:qid => 4, :status => "success"}])。この結果をフロント デスクに json 形式でレンダリングして返すことができます。これにより、フロント デスクは各 qid が正常に更新されたかどうかを知ることができます

いいねを押す +0
Ty80

begin/end、rescue、rasie を使用し、例外を確実にキャッチして処理します
例外をキャッチした後、失敗した現在の ID エントリを記録し、次のサイクルに進みます

最後に、記録した失敗IDをフロントに返却するだけです

これらのキーワードで特定の文法を検索できると思います

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート