2017-05-03 68 views
0

我認爲如果請求被識別爲JSON,Rails會自動識別/分析JSON參數。但是,下面的要求:JSON請求的強參數

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

而下面的PARAMS方法:

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

導致此錯誤:

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

任何想法這裏的慣例是讓強PARAMS + JSON工作將不勝感激。

更新

這裏發出請求(與HTTP客戶端axios)代碼:

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

這似乎不是一個json的身體,但字符串。嘗試使用'postman',selct'POST'和'application/json'類型的'raw body'來執行請求。它應該工作。 –

+0

請顯示向Rails後端發出請求的代碼。 –

+0

你試過解析JSON嗎? JSON.parse(params)這將給出一個正確的json格式,而不是字符串 –

回答

1

按照該文檔here

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

data:更換params: