2017-03-26 8 views
0

私はルビーを学んで何かをしています。私はどのように私はただのparam ID変換関連のエラーではなく任意のモデル関連のエラーをキャッチするようにコントローラを更新しないレスキューでのパラメータ変換エラーをキャッチする方法

def city 
    params.require(:id) 
    begin 
    @data = @user.city_details(Integer(params[:id]), 
           params[:city_name] 
    rescue ArgumentError => e 
    render_error(:bad_request, e.message) 
    end 
end 

model.rb

def city_details(id, city_name = 'philly') 
    StoredProcedure::User::GetCityDetails.exec!(
     id, 
     city_name 
    ) 
    end 
end 

をcontroller.rbしていますか?

id = begin 
    Integer(params[:id]) 
rescue ArgumentError => e 
    render_error(:bad_request, e.message) 
end 
@data = @user.city_details(id) 

ます。また、コントローラだけ

class MyController 

    rescue_from ArgumentError do 
    // code here 
    end 

    def mymethod 
    id = Integer(params[:id]) 
    end 
end 

答えて

0

私はあなたが正しいものをキャッチしていることを確認するためのモデルメソッドの前のparamを投じますCarlの答えを補完するものもあります:

id = Integer(params[:id]) rescue render_error(:bad_request, 'Invalid id') 
0

のトップレベルに救助を追加することができます。

関連する問題