2016-12-31 8 views
2

Railsアプリケーションを使い始めたばかりで、フォーム上でAjaxを使用しようとしていますが、キャッチする方法がわかりませんjs.erbファイル内のステータスコード私は私の意見/ユーザー/フォルダ内update.js.erbファイルを作成しましたステータスの取得:Railsの.js.erbファイルのajaxレスポンスのコード

respond_to do |format| 
     if @user.save 
      format.html { redirect_to @user, notice: 'User was successfully created.' } 
      format.js {} 
      format.json { render json: @user, status: :created, location: @user} 
     else 
      format.html { render action: 'edit' } 
      format.js {} 
      format.json { render json: @user, status: :unprocessable_entity } 
      logger.debug @user.response_errors 
     end   
    end 

:私は私の更新方法のコードを持って、私のユーザーコントローラでhttp://guides.rubyonrails.org/working_with_javascript_in_rails.html

:私はこのチュートリアルを以下のよ@user varをデバッグするのは非常に簡単ですが、自分のメソッドに設定されたステータスコードを取得する方法はわかりません。

申し訳ありませんが、ばかげた質問ですが、私はレールが新しく、すべてのフレームワークの概念を手紙に従おうとしています.Ajaxリクエストへの応答を作成するための最良の方法はわかりません。

#on my update.js.erb 
if(status == 'created') { 
    alert('Ok, created') 
} else { 
    alert('Something wrong happened') 
} 

私は任意の助けに感謝:私は達成しようとしている何

はこのようなものです。

答えて

1

オプション1:これは私がほとんどの場合にお勧めのオプションですupdate.js.erb

内部妥当性を確認してください。

update.js.erbは、結果がクライアントで評価するJavaScriptコードであるERBテンプレートです。この場合、次のようにすることができます。

<% if @user.valid? %> 
    alert('Ok, created'); 
<% else %> 
    alert('Something wrong happened'); 
<% end %> 

表示するアラートがサーバー側で発生するかどうかの決定。クライアントは、いずれかの受け取り:@userの状態に応じて

alert('Ok, create'); 

または

alert('Something wrong happened'); 

オプション2:2つの別々のjs.erbファイル

あなたのupdate.js.erb 2にファイルを分割することができます。

alert('Something wrong happened'); 

次に、あなたがあなたのコントローラに表示するかを決定します:答えを

respond_to do |format| 
    if @user.save 
    # ... 
    format.js {} 
    # ... 
    else 
    # ... 
    format.js { render 'update-error' } 
    # ... 
    end   
end 
+0

。 私の疑問は、自分のコードに設定されている状態がまだ残っています: 'format.json {render json:@user、status::unprocessable_entity}' これを設定する理由はありますか? – user3360978

+0

はい、私は200との応答が間違っていて、あなたが選んだステータスコードが正しいと思います。 –

0

私がやろうう:

format.js {render json: {@user, status: :created, locatiin: @user}}

+0

感謝を

alert('Ok, create'); 

update-error.js.erbは、いくつかのエラー処理が含まれている必要がありますupdate.js.erbは幸せなパスコードが含まれている必要があります残念ながら、それは構文エラーを投げた: /.../app/controllers/users_controller.rb30:構文エラー、unexpあなたの答えは、グレッグ、最初のオプションは非常によく動作し、私のニーズに合っていただきありがとうございます== ... format.js {レンダリングjson:{@ユーザー、ステータス::unprocessable_entit ... ...^ – user3360978

関連する問題