10

Rails 3 を使用していますが、フィールドの 1 つが渡されないため、フォームを送信できませんvalidates_presence_of。私のモデルは と呼ばれdinner、日付ピッカーと組み合わせて使用​​されるフィールドは と呼ばれdateます。

views/dinners/new.html.erb:

<%= f.text_field :date,  id: "datepicker" %>  

models/dinner.rb:

attr_accessible :date
validates_presence_of :date

dinners_controller.rb:

def create
  @dinner = Dinner.new params[:dinner]
  if @dinner.save
    flash[:notice] = "Dinner created successfully."
    redirect_to controller: 'dinners'
  else
    flash.now[:alert] = @dinner.errors.full_messages.join("<br>").html_safe
    render action: "new"
  end
end

を含むすべてのフィールドに入力するたびに、date空白ではないにもかかわらず、「日付を空白にすることはできません」というエラーが表示されます。何が起きてる?

4

1 に答える 1

6

私は答えを見つけました。

私のdate列は typedateで、検証前は Rails が実行.to_dateされていました。残念ながら、私が使用する日付ピッカーmm/dd/yyは、Rails が処理できないアメリカ式の日付を作成するため、 .to_datenil を返しました。これが、日付の検証に失敗した理由です。POST 要求は正常であったにもかかわらず、実際には nil だったためです。

ここに示すように、簡単な解決策を選択し、datepicker のデフォルトの日付を変更しました。

注: 私のバージョンの datepicker では、formatの代わりにdateFormat使用する必要yyyy-mm-ddがありyy-mm-dd、RailsString#to_dateは年「13」が文字どおり「2013」ではなく「0013」であると見なすため、代わりに を使用する必要がありました。

于 2013-01-25T22:07:39.660 に答える