ala*_*mar 10 ruby sinatra actionpack
我正在尝试编写一个简单的Sinatra,但我需要动作包中的ActionView :: Helpers :: NumberHelper. http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html
问题是,我该如何安装和使用它?
irb(main):001:0> require 'action_view/helpers/number_helper'
irb(main):002:0> number_with_precision(1)
NoMethodError: undefined method `number_with_precision' for main:Object
irb(main):004:0> ActionView::Helpers::NumberHelper.number_with_precision(1)
NoMethodError: undefined method `number_with_precision' for ActionView::Helpers::NumberHelper:Module
Run Code Online (Sandbox Code Playgroud)
为什么这个简单的步骤不起作用?
而且,如果我需要所有废话:
irb(main):001:0> require 'action_pack'
irb(main):004:0> require 'action_view'
irb(main):005:0> include ActionView::Helpers::NumberHelper
irb(main):006:0> number_to_phone(12345)
NoMethodError: undefined method `starts_with?' for "12345":String
Run Code Online (Sandbox Code Playgroud)
如何理解所有这一切?为什么这个模块不起作用?为什么它不需要它需要什么?它需要什么?starts_with在哪里?
谷歌对这些问题完全保持沉默.
UPD:现在我得到以下内容
number_with_precision(1, :locale => 'fr')
TypeError: wrong argument type nil (expected Fixnum)
Run Code Online (Sandbox Code Playgroud)
在我看来,我的NumberHelper已经坏了.这不是一个好的行为.
Leo*_*rea 20
因此,在做了一些研究之后,我在Rails的主分支上找到了以下pull请求
https://github.com/rails/rails/pull/6315
它非常的目标移动ActionView::Helpers::NumberHelper从ActionView到ActiveSupport
我还看到了一些封闭的问题,旨在解决一些问题,允许包含NumberHelper作为独立的.这意味着需要修复等.我没有找到与开放的问题,number_to_phone在这样的事实,但问题根源ActiveSupport增加了一个别名starts_with?的String类.我不确定他们是否已经抓到了那个bug.
在任何情况下,使用ActionView版本,3.2.13您可以执行以下操作
require 'action_view'
include ActionView::Helpers::NumberHelper
number_with_precision 3.1
#=> "3.100"
Run Code Online (Sandbox Code Playgroud)
至于那number_to_phone,仍将打破当前版本.我正在制作一个公关来解决这个问题.
编辑
至于语言环境问题,似乎如果你指定一个本地,你需要在它中设置正确的选项I18n才能使它工作.如果您不提供区域设置,则默认值将如下所示{:separator=>".", :delimiter=>"", :precision=>3, :significant=>false, :strip_insignificant_zeros=>false},否则,哈希将为空,这将导致问题.我似乎无法在Rails上找到任何关于它的问题.
再一次,这是在主人的公关上修复的https://github.com/carlosantoniodasilva/rails/commit/f6b71499e967e03c65d53cc890585f42f3b8aaa2
UPDATE
您ActiveSupport现在可以使用这些帮助程序
http://api.rubyonrails.org/classes/ActiveSupport/NumberHelper.html
它最近改变了:
require "active_support/all"
module Helpers
extend ActiveSupport::NumberHelper
end
Helpers.number_to_currency(10.23) # => "$10.23"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7584 次 |
| 最近记录: |