2016-05-14 4 views
3

Ruby on Railsで作業しています。私はcreate.js.erbをレンダリングするフォームを正常にセットアップできました。しかし、フォームがオブジェクトを作成できないかどうかを確認する方法があるかどうかは疑問です。今、失敗すれば何もしません。Rails format.jsとremote true

私のコントローラは、次のようになります。

if @expansion.save 
    respond_to do |format| 
     format.js 
     format.html { render action: "index", notice: 'Book was successfully created.' } 
     format.json { render json: @book, status: :created, location: @book } 
    end 
else 
    respond_to do |format| 
     format.js 
     format.json { render json: @book.errors, status: :unprocessable_entity } 
     format.html { render action: "index", notice: 'something went wrong' } 


     end 
end 

は私がcreate.js.erbでエラーをピックアップするための方法はありますか? Rails guides on Ajaxから

答えて

1

は:

$(document).ready -> 
    $("#new_article").on("ajax:success", (e, data, status, xhr) -> 
    $("#new_article").append xhr.responseText 
).on "ajax:error", (e, xhr, status, error) -> 
    $("#new_article").append "<p>ERROR</p>" 

要するに、サーバーが成功または失敗を応答するかどうかを確認するために、あなたのAjaxの機能チェックが必要です。

1

あなたはまだcreate.js.erb内の@expansionインスタンス変数にアクセスできます。 @ expansion.errorsの存在に応じてjsコードを実行できます。例えば、

<% if @expansion.errors %> 
    alert("You have the following errors: <%= @expansion.errors %>"); 
<% else %> 
    // js code for successful save 
<% end %> 
関連する問題