2016-05-25 9 views
0

私のレールコントローラのインデックスメソッドはポストリクエストを読み込みます。この条件を考慮するために、私は次のようしているポストリクエストのエラーを正しく処理する

NilClass:アプリケーションが最初に起動したときただし、「nilのためにポストの要求は存在せず、それが

未定義のメソッド `[]をスローしますコードブロック。基本的には、ポストリクエストを読むとエラーが発生すると、手動で値が設定されます。

begin 
    @business = params[:business_name] 
rescue 
    @business = ["Nestle"] 
end 

私はこれがこの問題を解決するには貧弱なアプローチだと感じています。何が良い方法だろうか?

答えて

0
@business = !params.nil? ? (params[:business_name] || "Nestle") : "Nestle" 

私は、アプリケーションがブラウザからの要求なしに、コントローラメソッドに当たっているかについて疑問に思うん。通常、ブラウザは開かれたページに対してGETリクエストを発行し、そのリクエストはコントローラメソッドにルーティングされます。基本的なunless request.post?に続いて、指定されていない場合にページのデフォルト値を設定するブロックは、インデックスページの非POST要求を処理する簡単な方法です。

0

@business = !params[:business_name].nil? || ["Nestle"]

+0

params [:business_name]呼び出しを呼び出すとエラーが発生するため、["Nestle"]部分には決して行きません。 – HoosierCoder

+0

これは私が問題を抱えていることです。存在しないパラメータでparams []を呼び出すとすぐにエラーが出るので、私はゼロをチェックできないようです。 – HoosierCoder

+0

これは奇妙です。パラメータが存在しない場合 – agustaf

関連する問題