1
私はすでにテキストフィールドを使用してrailscastを見た後、これについて同様の質問をしました.-ライアンはバーチャルアトリビュートを使用することを推奨します。私はそうのように私の編集ビューでこれを含まれているバーチャルアトリビュート付きテキストフィールドの日付
attr_accessible :title, :description, :start, :start_string
def start_string
unless start.nil?
start.to_s(:db)
end
end
def start_string(start_str)
self.start = Date.parse(start_str)
rescue ArgumentError
@start_invalid = true
end
def validate
errors.add(:start, "is invalid") if @start_invalid
end
:
私はそうのような仮想属性で私のモデルを設定しているが
<div class="field">
<%= f.label :start_string %> <br />
<%= f.text_field :start_string %>
<%#= f.date_select(:start, :order => [:month, :day, :year], :end_year => Time.now.year + 10) %>
</div>
、私はロード時のエラーを取得します私の編集フォーム
wrong number of arguments (0 for 1)
これは非常に古いrailscastと誰かのイベントのコメントです:
「あなたがnilを追加するとRaynが言いましたか? 「!それは罰金wotkすべきゲッターメソッドに
番号をチェックコードは、今日使用するために古くなっている。今
これを行うには、より効率的な方法 がありますので、これを実行するための適切な方法は何ですか今なのか?それを行うには、簡単でまっすぐな方法のように思える...私はエラーを取得していなかった場合は!
ずさんなずさんな - それは私のためにキャッチするためにありがとう。しかし、何らかの理由でTime.parse(star t_str)は、2013年3月30日のように日付入力を拒否し、2013年12月1日と2013年1月12日と解釈します - Time.parseまたはDate.parseは標準的なアメリカの方法で入力を処理しませんか? – Rapture
おそらく私はChronic's Parseメソッドが必要でしょうか? – Rapture
いいえ、Rubyの日本の起源(日/月/年の形式)のため、いつもそうするでしょう。 [Chronic](http://chronic.rubyforge.org/)のようなものを使って、Chronic.parse(start_str)を実行させることができます。それ以外の場合は、必要な処理を行うために 'Date.parse'をオーバーライドするか、カスタムメソッドを作成して呼び出す必要があります。 –