私は次のように失敗したステップを持っているが...余分なスペースto_sを使って(:ロング)
expected #has_content?("July 4, 2009") to return true, got false
の問題は、私が思うに、「7月」の間に余分なスペースであり、「 4 "となる。私はステップ定義とビューの両方でpublished_on.to_s(:long)を使用しているので、余分なスペースがどこから来ているのかは完全にはわかりません。
アイデア?
私は次のように失敗したステップを持っているが...余分なスペースto_sを使って(:ロング)
expected #has_content?("July 4, 2009") to return true, got false
の問題は、私が思うに、「7月」の間に余分なスペースであり、「 4 "となる。私はステップ定義とビューの両方でpublished_on.to_s(:long)を使用しているので、余分なスペースがどこから来ているのかは完全にはわかりません。
アイデア?
それはあなたがしようとすると何が起こるかです:
Date.civil(2010, 7, 4).strftime("%e") # => " 4"
とRailsは、その:long
formatで%e
を使用しています。面白いのは、%e
はdocumentedではないということです。
余分なスペースを気にしない場合(余分なスペースはHTMLには表示されません)、Rubyの動作に合わせてステップ定義を調整します。あなたはそれについてのケアを行う場合は、それをスキッシュ:
Date.civil(2010, 7, 4).to_s(:long).squish # => "July 4, 2010"
スキッシュはRailsの3の下盛であるあなたがRailsの2を使用している場合は、GSUB使用することができます。
Date.civil(2010, 7, 4).to_s(:long).gsub(/\s+/, " ") # => "July 4, 2010"
キュウリ(ブラウザと同じように)は繰り返しHTMLを無視するので、日付に2つのスペースがありますが、キュウはそれを1。 – Jacob
は、私は同じ問題に遭遇しました今日のキュウリ試験で!
Date::DATE_FORMATS[:long]
が"%B %e, %Y"
であるという問題が指摘されています。 %e
は、ri strftime
によると、空白埋め日番号が得られます。
%d - Day of the month, zero-padded (01..31)
%-d no-padded (1..31)
%e - Day of the month, blank-padded (1..31)
だからデフォルトでは、これは私がRailsの3.1.3で見たものである。
> d = '2012-02-01'.to_date
=> Wed, 01 Feb 2012
> d.to_s(:long)
=> "February 1, 2012"
不思議な用途をレール日付用として("01"
が得られる%d
)回:long
フォーマットの異なる日フォーマット(%e
、Y ields " 1"
):
> d = '2012-02-01'.to_time
=> 2012-02-01 00:00:00 UTC
> d.to_s(:long)
=> "February 01, 2012 00:00"
> Time::DATE_FORMATS[:long]
=> "%B %d, %Y %H:%M"
> Date::DATE_FORMATS[:long]
=> "%B %e, %Y"
ソリューションは、代わりに%e
のあなたのフォーマット文字列で一日のために"%-d"
を使用することです:
> Date::DATE_FORMATS[:long] = "%B %-d, %Y"
=> "%B %-d, %Y"
> d = '2012-02-01'.to_date
Wed, 01 Feb 2012
> d.to_s(:long)
=> "February 1, 2012"
あなただけの新しい初期に次の行を追加することができます、config/initializers/date_formats.rb
:
Date::DATE_FORMATS[:long] = "%B %-d, %Y"
このデフォルトをRailsで変更したいのであればhttps://github.com/rails/rails/pull/1994にコメントしてください。
価値があるのではなく、私はむしろ"%-d"
修正を使用したいと思います(または"%-e"
!Rubyのネイティブ".squeeze"
、さらには".squeeze(' ')"
を使用して、日付形式を混乱させたくないのであれば、同じ結果が得られます)。 )。
また、アップデートとして:@iainは、 '%e'は記載されていないと述べています。それが価値あるものであれば、it is now! (興味深いことに、あなたが試してみると、"%-e"
は特に有効ではありません)
私たちにステップとその定義を教えてください。 –
ここにステップの定義があります - > https://gist.github.com/b6ba990085532c6d05bf –