2017-05-03 9 views
0

Ich dachte, dass Rails JSON-Parameter automatisch identifiziert/analysiert, wenn die Anfrage als JSON erkannt wird. Aber die Anfrage unter:Starke Parameter mit JSON-Anfrage

Processing by Api::V1::LinksController#create as JSON 
Parameters: {"link"=>"{\"title\":\"My first title\"}"} 

Und die folgende params Methode:

def link_params 
    params.require(:link).permit(:title) 
end 

Ergebnisse in diesem Fehler:

NoMethodError (undefined method `permit' for "{\"title\":\"My first title\"}":String):

Irgendwelche Ideen, was hier der Konvention ist stark params + json zu erhalten Arbeiten würde sehr geschätzt werden.

aktualisieren

Hier ist der Code, der die Anforderung (mit http-Client axios) macht:

axios({ 
    method: 'post', 
    url: '/api/v1/links.json', 
    responseType: 'json', 
    params: { 
    link: { 
     title: "My first title" 
    } 
    }, 
}) 
.then((response) => { 
}); 
+1

Dies scheint nicht ein JSON-Körper, sondern String. Versuchen Sie, die Anfrage mit 'postman', select' POST' und 'row body' vom Typ' application/json' auszuführen. Es sollte funktionieren. –

+0

Bitte zeigen Sie den Code an, der eine Anfrage an das Rails-Backend stellt. –

+0

Haben Sie versucht, JSON zu analysieren? JSON.parse (params) Dies wird ein korrektes JSON-Format anstelle der Zeichenfolge –

Antwort

1

sich nach den here

axios({ 
    method: 'post', 
    url: '/user/12345', 
    data: { 
    firstName: 'Fred', 
    lastName: 'Flintstone' 
    } 
}); 

params: mit data: ersetzen docs.

Verwandte Themen