2012-02-02 7 views
0

引用符コントローラに新しい引用符を保存するとき、私たちのレール3.1.0アプリケーションに奇妙なエラーがあります。クォートはrfqに属し、rfqは18がクォートコントローラに渡されたものです。エラーは次のとおりです。表示入力された整数は、レール3.1.0で数値として取られませんでした

Validation failed: Quoted total is not a number 

パラメータは次のとおりです。それが示すように

{"utf8"=>"✓", 
"authenticity_token"=>"p9waUq7wNk6djm9uRtDOA0eHLzzlJuSCWrTsSEBvcck=", 
"quote"=>{"test_item_ids"=>["1", 
"2"], 
"_destroy"=>"false", 
"quoted_total"=>"290"}, 
"commit"=>"Save", 
"rfq_id"=>"18"} 

、quoted_totalは290ですが、どういうわけか、それが数値として認識されませんでした。

は、ここで引用符コントローラでコードを作成することです:

@quote = @rfq.quotes.new(params[:quote], :as => :roles_new) 
    @quote.input_by_id = session[:user_id] 
    @quote.test_items = TestItem.find_all_by_id(params[:quote][:test_item_ids]) 
    if @quote.save! 
     redirect_to URI.escape("/view_handler?index=0&msg=quote saved!") 
    else 
     flash.now[:error] = "Not saved!" 
     render 'new' 
    end 

エラーが@ quote.saveによって引き起こされます。引用コントローラのrspecコードにも同じエラーがあります。エラーの原因本当にありがとう。

答えて

1

実際には、パラメータ[quoted_total]は文字列です。モデルではquoted_totalを数値として検証すると思います。

+0

はい:validates_numericality_of:quoted_total、:greater_than => 0.00。しかし、paramsによって返されるすべてのデータはすべて文字列であり、モデルはそれらを変換する方法を知っています。 – user938363

+0

問題が見つかりました! attr_accessibleの間違った名前が原因です。 quoted_totalはattr_accessibleにないため、その値を渡すことはできません。 – user938363

関連する問題