2016-12-18 2 views
1

Hallo Ich versuche, die folgende params von dem vorderen Ende zu meinem Backend-Schienen-Controller, wo ich stark params einrichten Meine Ajax-Aufruf wie dieseSchienen Starke Params nicht params gesendet durch Ajax Beitrag erkennen

$("#send").click(function() { 
     var message = $("#message").val(); 
     var listing_id = $("#listing_id").val(); 
     d = { 
      'message': message, 
      'listing_id': listing_id, 
      'status': "pending" 
     }; 

     $.ajax({ 
      type: "POST", 
      url: "/crecits", 
      data: d 
     }); 
    }); 
sieht gesendet

Parameters: {"message"=>"Hello world", "listing_id"=>"1", "status"=>"some status"} 

Und dann mein Controller, behandelt dies wie folgt aussieht

Dies wird in den folgenden Parametern an die Steuerung zu senden

+0

Update: Folgendes ist die Fehlermeldung, die ich bekomme ActionController :: ParameterMissing (param fehlt oder der Wert ist leer: crecit): – Shadid

Antwort

2

Wenn Sie params wie folgt aus:

params.require(:crecit).permit(:user_id, :status, :listing_id, :message) 

Das wird Ihre params erfordern wie diese kommen in:

{ 
    crecit: { 
    user_id: ..., 
    status: ..., 
    etc 
    } 
} 

jedoch Ihre AJAX ist die params ohne die äußere crecit Hash senden.

Sie können entweder Ihre AJAX-Daten ändern, um einen verschachtelten Hash zu senden, oder denselben Wert beibehalten und stattdessen den Wert .require(:crecit) entfernen. I.e. es wäre nur params.permit(:user_id, :status, etc)

Verwandte Themen