2016-09-30 3 views
0

モデル関数を呼び出してそのデータを返すrailsコントローラ関数があります。私は、関数呼び出しを行うためにajaxを使用しようとしていて、私が気にするすべての値が返されているので、リダイレクトはしたくありません。 ページを再読み込みせずにテンプレートのエラーが表示されないようにするにはどうすればよいですか?Rails 4:Ajaxリクエストは関数を呼び出し、リダイレクトせずに値を返します

コントローラ

def update_sales 
    @data = ControllerName.function_name() 
    return @data # What I want 
    redirect_to path_name # what I don't want 
end 

モデル

def self.function_name 
    ... 
    ... 
    return data 
end 

アヤックス

$.get("/update_sales").done(function(data){ 
    console.log(data); 
    // I would set html attribute to data but I get missing template error 
}) 

答えて

1

がsを試みることができますこのようなコントローラーのアクションで何か?

if @data.save 
    // send the object back to interface 
    render json: @data.serialize.to_json, status: :ok 
else 
    // send the errors back to interface 
    render json: @data.errors.full_messages, status: :internal_server_error 
end 

AJAX呼び出し:

$.ajax({ 
    url:"/update_sales", 
    type: "PATCH", 
    data: data_to_send 
    }).done(function(data, textStatus, jqXHR) { 
    // do stuff when it is done 
    }).fail(function(jqXHR, textStatus, errorThrown){ 
    // do stuff if it errors out 
    }); 
+0

グレート!私は '.save'部分を削除し、' @ data'が存在することを確認しましたが、これは魅力のように機能しました –

+0

awesome !!!助けてうれしい – Eric

関連する問題