2016-12-21 9 views
0

Я пытаюсь отправить переменную JavaScript в контроллер Rails через запрос AJAX, чтобы использовать эту переменную, чтобы найти правильный экземпляр моей модели.AJAX request Rails slideshow

Я могу заставить мой контроллер печатать эту переменную, но я не смог ее сохранить в любом месте, например, частично.

Вот мой js.erb файл:

$(".single-item").on('afterChange', function(event, slick, currentSlide, nextSlide){ 
    $.ajax({ 
    url: 'update_description', 
    type: 'post', 
    data: {slideNumber: $(".single-item").slick('slickCurrentSlide')}, 
    dataType: 'json', 
    success: function(data) { 
    } 
    }); 

И мой файл контроллера:

def index 
    @posts = Post.all 
    if params[:slideNumber] == nil 
     @slideNumber ||= 0 
    else 
    @slideNumber = params[:slideNumber] 
    end 

    puts @slideNumber 
    respond_to do |format| 
     format.html {} 
     format.js {} 
    end 
end 

Это ставит @slideNumber в контроллер правильно и печатает переменную приходя из JavaScript в консоль, однако я не могу передать его частичным или повторно использовать его в качестве ответа из файла JavaScript. Я что-то упускаю?

+0

Вы пробовали 'reply_with @ slideNumber'? –

+0

Привет, спасибо большое за ваш ответ. Я попытался заменить блок 'reply_to' на' response_with (@slideNumber) ', но я все еще не заметил чего-то, потому что я не получаю эту переменную – Laurence

+0

Я получаю эту ошибку в консоли: POST http: // localhost: 3000/update_description 500 (Внутренняя ошибка сервера) – Laurence

ответ

0

Если вы посмотрите на журнал сервера, возможно, вы увидите, что Rails отвечает содержимым html. Попробуйте добавить .js к URL-адресу запроса ajax, чтобы Rails знал, что он должен отвечать js. Например:

var update_description = <%= "#{update_description_path}.js" %>