2013-03-23 2 views
1

Я отправляю запрос Ajax POST для создания нового обзора. Я хочу, чтобы мой контроллер вернул идентификатор нового объекта, чтобы я мог обновить пару элементов на моей веб-странице. Хотя единственный функциональный возврат, который я получаю, - это полный код веб-страницы.идентификатор возвращаемого элемента от контроллера до ответа Ajax

Вот Ajax:

$(document).ready(function(){ 

    $(".new_rate_restaurant").change(function(e){ 
     e.preventDefault(); 
     var path = $(this).closest("form").attr("action"); 
     $.ajax({ 
      type: 'POST', 
      url: path, 
      data: $(this).closest("form").serialize(), 
      success: function(response){ 
       alert(response); 

      } 
     });  

    }); 

}); 

Вот мой контроллер:

if @review = Review.create(@attr) 
      flash[:success] = "Review saved. Share with friends!" 
      #render :json => @review 
     else 
      flash[:error] = @review.errors.full_messages.to_sentence 
     end 

     respond_to do |format| 
      format.html {redirect_to @restaurant} 
      format.js 
      format.json 
     end 

Вот что не сработало:

положить render :json => @review.id после обзора создается, или в response_to block. По крайней мере, не так, как написано в комментарии под вспышкой [: success]

Удачи! Я очень надеюсь, что скоро получаю ответы!

+0

Я не знаю, о рубин-на-рельсы , но я кое-что знаю о AJAX ... он всегда возвращает любую страницу на выходах принимающей стороны. Другими словами, либо проанализируйте содержимое веб-страницы, которую вы получаете, либо просто получите только возвращаемый идентификатор. –

ответ

2

Укажите dataType в json при отправке запроса в Javascript:

$.ajax({ 
    type: 'POST', 
    dataType: 'json', 
    // other stuff goes here 
}); 

и вернуть новый review идентификатор, как это:

respond_to do |format| 
    format.html { redirect_to @restaurant } 
    format.js 
    format.json { render :json => @review } 
end 
+0

Илья спасибо. 2 Вопросы, если вы когда-нибудь заглянете на эту страницу: 1) Я ищу твердый учебник Ajax/JQuery. Любые советы 2) быстрый совет по анализу объекта, чтобы он читал Ajax? Прямо сейчас он возвращает объект, и оба ответа ["name"] и response.name ничего не дают. Тот, над которым я работаю, но любой быстрый совет поможет мне компенсировать потерянное время. – Laurent

Смежные вопросы