POST を使用して「結果」ページにアクセスすると、エラー 422が発生するというレポートを Web サイトのユーザーから受け取りました。このエラーをまったく再現できないので、以下のコードに書式設定でこのエラーの原因となるものがあるかどうか疑問に思っていますか? Rails 3.x プロジェクトを Rails 4.2 にアップグレードしたため、ここでエラーが発生する可能性があります。
コードに 422 エラーを発生させる明白な何かがあるかどうか、または 422 エラーをトラブルシューティングする方法があるかどうかを知りたいです。
基本的に、#show には POST メソッドがあります。結果テキストを作成し、 /this-post-name/result?r=abc123 のような URL に到達します。/result で #show をレンダリングしています。これは、基本的に同じページを再度読み込みますが、「結果ボックス」があるためです。/result を使用する必要があるのは、初心者プログラマーとしての私が選択したことであり、絶対に必要ではないと思います。
エラーが「respond_to」内にあると確信していますが、それを理解できないか、トラブルシューティング(つまり、再作成)できません。
また、これが重要かどうかはわかりませんが、このページで大量のAuthencityTokenエラーが発生します.
編集:iPhoneからアクセスしてフォームを投稿することでこの問題を再現し、Cookieを無効にしてフォームを再度送信しました. それは人々が頻繁に行うことではありませんが、Cookieを無効にするとこれが発生する可能性があると思いますか?
def show
@avaliable_posts = Post.where(:available => true)
end
def result
if request.get? && params[:r].blank? # Just visiting /result withoutout POST or ?r url
redirect_to category_path(@category)
else
set_round(session[:round_by_number])
# Either the visitor just posted the result or is revisiting through URL
if !params[:r].blank? # Visitor arrived from URL
@result = Result.find_by_scrambled_identifier(params[:r])
params_to_use = @result.params_used
@params_to_use = @result.params_used
else
params_to_use = params
@params_to_use = params_to_use
end
post_instance = @post.get_post_instance(params_to_use)
if post_instance.valid?
@post_result_array = post_instance.calculate_me(params_to_use)
@post_result_text_array = @post_result_array[0]
respond_to do |format|
format.html { render :action => "show" }
format.json { render :json => @post }
end
else # post not valid
@errors = post_instance.errors
respond_to do |format|
format.html { render :action => "show" }
format.xml { render :xml => @validator.errors, :status => :unprocessable_entity }
format.json { render :json => @post }
end
end
end
end