2016-12-21 7 views
0

Ich versuche, eine JavaScript-Variable zu meinem Rails-Controller durch eine AJAX-Anfrage zu senden, um die Variable zu verwenden, um die richtige Instanz meines Modells zu finden.AJAX Anfrage Schienen Diashow

Ich kann meinen Controller bekommen, um diese Variable zu drucken, aber ich konnte es nirgends als Teil speichern.

Hier meine js.erb Datei ist:

$(".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) { 
    } 
    }); 

Und meine Controller-Datei:

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 

Dieses setzt @slideNumber in der Steuerung korrekt und druckt die Variable von JavaScript kommt zu trösten, Ich kann es jedoch nicht an einen Teil übergeben oder als Antwort aus der JavaScript-Datei wiederverwenden. Fehle ich etwas?

+0

Haben Sie schon versucht "respond_with @ slideNumber"? –

+0

Hallo, vielen Dank für Ihre Antwort. Ich habe versucht, meinen 'Antwort_to'-Block durch eine' Antwort_with (@slideNumber) 'zu ersetzen, aber ich vermisse immer noch etwas, weil ich diese Variable nicht erhalte – Laurence

+0

Ich erhalte diesen Fehler in der Konsole: POST http: // localhost: 3000/update_description 500 (Interner Serverfehler) – Laurence

Antwort

0

Wenn Sie sich das Serverprotokoll ansehen, werden Sie vielleicht sehen, dass Rails mit dem HTML-Inhalt reagiert. Versuchen Sie, .js zur ajax-Anfrage-URL hinzuzufügen, damit Rails weiß, dass es mit js antworten soll. Zum Beispiel:

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