2

Rails アプリケーションを使い始めたばかりで、フォームで Ajax を使用しようとしていますが、js.erb ファイル内のステータス コードを取得する方法がわかりません。私はこのチュートリアルに従っています: http://guides.rubyonrails.org/working_with_javascript_in_rails.html

私の Users コントローラーには、更新メソッドのコードがあります。

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

views/users/ フォルダー内に update.js.erb ファイルを作成し、@user 変数をデバッグするのは非常に簡単ですが、メソッドに設定されたステータス コードを取得する方法がわかりません。

ばかげた質問で申し訳ありませんが、私はレールを初めて使用し、すべてのフレームワークの概念を文字どおりに理解しようとしていますが、Ajax リクエストへの応答を作成するための最善の方法がわかりません。

私が達成しようとしているのは、次のようなものです。

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

助けていただければ幸いです。

4

2 に答える 2

1

オプション 1: 内部の有効性を確認するupdate.js.erb

これは、ほとんどの場合にお勧めするオプションです。

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

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

どのアラートを表示するかの決定は、サーバー側で行われます。クライアントは次のいずれかを受け取ります。

alert('Ok, create');

また

alert('Something wrong happened');

の状態により@userます。

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

を 2 つのファイルに分割できupdate.js.erbます。update.js.erbハッピー パス コードを含める必要があります。

alert('Ok, create');

update-error.js.erbエラー処理を含める必要があります。

alert('Something wrong happened');

次に、コントローラーに表示するものを決定します。

respond_to do |format|
  if @user.save
    # ...
    format.js {}
    # ...
  else 
    # ...
    format.js { render 'update-error' }
    # ...
  end         
end
于 2016-12-31T22:03:00.210 に答える
0

私はやろうとします:

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

于 2016-12-31T21:24:13.207 に答える