【发布时间】:2018-08-01 19:16:33
【问题描述】:
我探索 Elm 和 Rails Api 作为服务器。 从 Rails 获取数据很容易,但如何 POST。
Rails score.json中有一个表scores:
[
{
id: 1,
name: "Larry",
score: 100
}
]
在 Elm 我有解码/编码
scoreDecoder : Decoder Score
scoreDecoder =
Decode.map3 Score
(field "id" Decode.int)
(field "name" Decode.string)
(field "score" Decode.int)
encodeScore : Model -> Encode.Value
encodeScore model =
Encode.object
[ ("name", Encode.string model.name)
, ("score", Encode.int (sumMarkedPoints model.entries))
]
还有一个命令:
postScore : Model -> Cmd Msg
postScore model =
let
url =
"http://localhost:3000/scores"
body =
encodeScore model
|> Http.jsonBody
request =
Http.post url body scoreDecoder
in
Http.send NewScore request
我有按钮发送消息:ShareScore
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
ShareScore ->
( model, postScore model )
我得到: 发布您的分数时出错:BadStatus { status = { code = 400, message = "Bad Request" }, headers = Dict.fromList [("content-type","application/json; charset=UTF-8")], url = "http://localhost:3000/scores", body = "{\"status\":400,\"error\":\"Bad Request\",\"exception\":\"#\u003cActionController::ParameterMissing: 参数丢失或值为空:
需要一些帮助来“解码”那个..
def score_params
params.require(:score).permit(:id, :name, :score)
end
【问题讨论】:
标签: ruby-on-rails json ruby-on-rails-5 elm