2017-04-25 8 views
1

なぜこのようなことが起こっているのかわかりませんが、ページの再読み込み後も一貫して発生します。私はparamscredit_amountを送りますが、コントローラはそれらを取得しますが、見つかったレコードを更新すると何とか0に戻ります。その奇妙なことです。強力なパラメータが送信され、不思議に変更されました(RubyとjQuery)

Processing by CustomersController#update as JSON 
Parameters: {"id"=>"89", "credit_amount"=>"$75.01"} 
Shop Load (0.2ms) SELECT "shops".* FROM "shops" WHERE "shops"."id" = ? LIMIT 1 [["id", 1]] 
Customer Load (0.1ms) SELECT "customers".* FROM "customers" WHERE "customers"."id" = ? LIMIT 1 [["id", 89]] 
(0.1ms) begin transaction 
Customer Exists (0.2ms) SELECT 1 AS one FROM "customers" WHERE 
("customers"."fresh_customer_id" = '6474232467' AND "customers"."id" != 89) 
LIMIT 1 

これはcredit_amountは$ 75.01だったと今では0.0を下回るまで、ここまで、興味深い部分です:

SQL (0.2ms) UPDATE "customers" SET "credit_amount" = ?, "updated_at" = ? 
WHERE "customers"."id" = ? [["credit_amount", 0.0], 
["updated_at", "2017-04-25 22:25:57.428297"], ["id", 89]] 

そして、これはRubyのである。ここ

は、サーバのログが持っているものですデータを受信して​​処理するコントローラ:

def update 
    @customer = Customer.find(customer_params) 
    update_amount = params["credit_amount"].to_f 
    @customer.update(credit_amount: update_amount) 
    render json: {id: customer_params, credit_amount: update_amount} 
end 
+0

文字列を使用していて、dbが数字を期待している可能性がありますか? – Gerry

答えて

1

を削除しますより前の金額はto_fです。これは次のようなものに役立ちます。

update_amount = params["credit_amount"].tr("$", "").to_f 
+0

イーグルアイジェリー!どうもありがとうございました。私はちょうど私が狂っていたと思った。 – ToddT

関連する問題