2017-04-21 7 views
0

基本的に、私のビューではレールコンソールの動作が動作しないようです - datetime型の列 "start_date"を持つワークショップモデルがあります。
私はレールコンソールを入力したとき、私は
Railsビューのdatetimeから1日を取得できません

Workshop.find(<id>).start_date.day 

戻り予想通り、特定の日(例えば「21」日時「金の場合を、2017年4月21日午前17時○○分00秒UTCをこの種類のオブジェクトを作成しています+00:00 ')。

私の見解では、私は 'day'メソッドを使用することができません。私は、ワークショップのための私のショービューでスリム宝石と、このコードを使用しています:このエラーで

p= workshop.start_date.day 

結果:nilのための未定義のメソッド `日」:NilClass
しかし、コード

p= workshop.start_date 

日付を正しく表示し、コードを表示します。

p= workshop.start_date.class 

オブジェクトのクラスが次のように表示されます。ActiveSuppo rt :: TimeWithZone

何が起こっているのですか?Railsはクラスがゼロであると言っているのはなぜですか?

+2

私はstart_date属性 'nil'を持つレコードがあると思います。それがエラーの理由です。ビューに条件を入れて 'workshop.start_date.dayならworkshop.start_date'をチェックしてください。これはあなたがそのようなエラーをキャッチするのに役立ちます。 –

+0

私は遅れました - ありがとう、それはまさにそれでした。私は現場でフィールドを開発していましたが、まだこのフィールドの検証をオンにしていないので、このフィールドが1つのオブジェクトが無しに設定されています。 – bochen421

+0

心配はいりません。これはコーディング中に発生します。幸せなコーディングのための乾杯。 –

答えて

2

p= workshop.start_date.day if workshop.start_date 

は、私はいくつかのレコードがstart_dateの属性nilを持ち、それはビューがエラーをスローした理由だと思い、ビューに次のように使用してください。

+2

それは私の推測です。 Ruby 2.3で導入された安全なナビゲータを使用すると、これをビューで処理するよりエレガントな方法が追加されます: 'p = workshop&.start_date&.day'。 詳細はこちら:http://mitrev.net/ruby/2015/11/13/the-operator-in-ruby/ – thirdsun

+0

クール。それも最善の方法です。それがうまくいくことを望みます。乾杯。 –

関連する問題