2016-11-30 18 views
0

railsフォームの代わりにajaxを使用してデータを投稿しようとしています。 しかし、私はエラーを取得したいときは、メッセージを渡すのが難しいようです。 (からajaxでリクエストを送信し、表示にレールエラーを表示したい

<% if @calculator.errors.any? %> 
     <%= @calculator.errors.full_messages %> 
    <% end %> 

"は0~5の間であるべきである" モデルで

:コントローラで

validates_uniqueness_of :record, :message => " should be between 0 to 5" 

def new 
     @calculator = Calculator.new 
     puts "from new #{@test}" 
    end 

    def create 
     @calculator = Calculator.new(params[:calculator]) 
     if @calculator.save 
      puts "success" 
     else 
      @test = @calculator.errors[:record] 
      puts @test 
      render :action => :new 
     end  
    end 

図で ここに私のコードでありますcreate))が端末に表示されますが、「新しい#から{@テスト}」(新しいもの)はメッセージを表示しません。

@testがflash [:notice]に保存されていればうまく動作します。しかし、エラーメッセージがフォームフィールドにのみバインドできるので、この問題があるかどうかを知りたいですか? コードに問題がありますか? ありがとう

+0

からショーのMSGです。 '@ calculator'が保存されていない場合、新しいビューがレンダリングされますが、新しいメソッドのコードは実行されません。 – Thanh

答えて

0

あなたのajaxコードが表示されません。

しかし、私は理解しました。あなたはajaxで新しい電卓を作成したいですか?正常に保存された場合、show flash [:notice]、間違って保存すると、show flash [:error]

リロードページなしのajax作業。それはあなたのコードrender :action => :newが必要でないことを意味します。お使いのコントローラで

:あなたの今

def create 
    @calculator = Calculator.new(params[:calculator]) 
    if @calculator.save 
    msg = "Create successfully" 
    else 
    msg = @calculator.errors[:full_messages] 
    end  

    if request.xhr? 
    response_to |format| 
     format.json{msg: msg} 
    end 
    end 
end 

AJAXコード、応答successに。応答がresponse["msg"]

を持たなければなりません@のtest`がnil `ので、あなたは、新しい方法でtest`変数@`定義しないので、あなたが今必要なのは、応答

関連する問題