当前位置: 首页 > 知识库问答 >
问题:

如何设置数据库以接受货币值?

慕容嘉熙
2023-03-14

我正在用续集写辛纳屈应用程序。我第一次尝试添加一种货币。在网上查看后,我使用数字作为值,当然不言而喻,我需要小数点的精度。

我知道在MySQL中,NumericDecimal是相同的。所以我想知道我做错了什么。我觉得我需要以某种方式定义小数点。这是我的模型:

# Contracts table: Here the users can define their contracs
DB.create_table?(:contracts, engine: 'InnoDB') do
    primary_key :id
    Integer :user_id,   null: false
    String  :name,      null: false
    String  :description
    Numeric :cost,      null: false
end

每次我尝试提交带有小数点的值时,我都会得到以下错误,我认为这是一个验证错误。我还没有明确使用验证,所以我认为它是Sequel或MySQL特有的。

我应该如何更改我的模型,以便允许我添加十进制值?

编辑:根据请求,我添加控制器(路由)文件:

class Metro < Sinatra::Base
    get "/user_add_contract" do
        protected!
        haml :user_add_contract
    end

    post "/user_add_contract" do
        protected!
        user = session['name']
        begin
            uid = User.first(username: user)
            Contract.create(user_id: uid[:id], name: params['name'], description: params['description'], cost: params['cost'].to_f)
            redirect '/user_list_contract'
        rescue Exception => e
            @error = e
            haml :details_error
        end


    end

end

和HAML(视图):

%form(action="/user_add_contract" method="post")
  %fieldset
    %legend Φόρμα Νέου Συμβολαίου
    %div{class: 'column1of2'}
      %ul
        %li
          %label(for="name")Ονομασία:
          %input#name(name="text" name="name")
        %li
          %label(for="description")Περιγραφή:
          %textarea.email#description(type="text" name="description")
        %li
          %label(foor="cost")Κόστος:
          %input#cost(type="number" name="cost")
        %li
          %input(type="submit" value="Εγγραφη") ή <a href="/panel">Ακύρωση</a>

谢谢

共有1个答案

令狐献
2023-03-14

相关解答:如何使用html5输入类型number处理浮点和十进制分隔符

step="属性在这里默认为1,这意味着它将截断小数点后的所有内容(或者回退错误,这取决于它的设置方式和您使用的浏览器)。

尝试在输入元素上设置step="0.01",假设您只想获得最近的美分,看看这是否有效。代码中的其他内容看起来都很好。**

  • 除了你有"foor"而不是"for"在你的成本

 类似资料:
  • 可能的重复: 在jasper report中将字符串格式化为货币格式 我正在使用JasperReports创建一个发票文档,该文档需要本地化并支持多种货币。 好吧,我终于想通了,但既然国防部锁定了这个问题,应该是重复的--但它不是...不管怎样,这里有一个答案:

  • 货币报价最新数据 接口: currency_latest 目标地址: https://currencyscoop.com/ 描述: 获取货币报价最新数据 限量: 单次返回指定货币的最新报价数据-免费账号每月限量访问 5000 次 输入参数 名称 类型 必选 描述 base str Y base="USD" api_key str Y api_key="Please put your api key

  • 接口: get_js_dc_current 目标地址: https://datacenter.jin10.com/reportType/dc_bitcoin_current 描述: 获取数字货币实时行情, 实时更新 限量: 单次返回主流数字货币当前时点行情数据 输入参数 名称 类型 必选 描述 无 无 无 无 输出参数 名称 类型 默认显示 描述 reported_at str Y 日期时间-索引

  • null 请帮我查一下上面的货币格式。

  • 我试过... 但那就不允许便士条目了。 我想要增量按钮控制在英镑上升,但仍然想要输入便士的能力。 谢谢,1DMF

  • 向最终用户提供一份货币清单。他们可以在任何时候选择他们感兴趣的一个。因此,需要根据所选货币更改中使用的区域设置。这似乎不是微不足道的。 是否有一种方法可以根据在运行时动态提供的货币代码来确定区域设置?