0

次のモデル検証があります

  validates_presence_of :enddate
  validates_presence_of :startdate

これが投稿されているものです

Parameters: {"utf8"=>"✓", "authenticity_token"=>"QczhHQoDU7a0/WKnUnLlzQ9Aob/NQOj1naiwfOYIW1c=", 
"billsanddeposit"=>{"name"=>"Test Bill Item", 
"itemcategory_id"=>"2", "repeatsevery"=>"2", "startdate"=>"01/24/2013", "enddate"=>"01/31/2013", 
"deposit"=>"0", "amount"=>"100"}, "commit"=>"Create Billsanddeposit"}

そして、これらは現れているエラーです

Enddate can't be blank
Startdate can't be blank

これらはデータベースの日時フィールドであり、スキャフォールディングが元々フォームを作成したとき、date_selectがありました。これをjquerydatepickerを含むtext_fieldに変更しました。上記のように値が投稿されているのを確認できたとしても、表示されていないことを示す上記のエラーが発生します。

これがモデル全体です

class Billsanddeposit < ActiveRecord::Base
  attr_accessible :amount, :bankaccount_id, :deposit, :enddate, :itemcategory_id, :name, :repeatsevery, :repeattype_id, :startdate

  validates_presence_of :amount
  validates_presence_of :bankaccount_id
  validates_presence_of :itemcategory_id
  validates_presence_of :enddate
  validates_presence_of :name
  validates_presence_of :repeatsevery
  validates_presence_of :repeattype_id
  validates_presence_of :startdate


  belongs_to  :bankaccount
  belongs_to  :repeattype
  belongs_to  :itemcategory
  has_many    :ledgeritems
end

これまでに行ったのは、関係と検証を追加することだけです。

これがコントローラーです。ほぼ完全にデフォルトです

  def create
    @billsanddeposit = Billsanddeposit.new(params[:billsanddeposit])

    respond_to do |format|
      if @billsanddeposit.save
        @billsanddeposits = Billsanddeposit.joins(:bankaccount).where("bankaccounts.user_id = ?", current_user.id)
        @billsanddeposit = Billsanddeposit.new

        format.html { redirect_to @billsanddeposit, :notice => 'Billsanddeposit was successfully created.' }
        format.json { render :json => @billsanddeposit, :status => :created, :location => @billsanddeposit }
      else
        @billsanddeposits = Billsanddeposit.joins(:bankaccount).where("bankaccounts.user_id = ?", current_user.id)

        format.html { render :action => "index" }
        format.json { render :json => @billsanddeposit.errors, :status => :unprocessable_entity }
      end
    end
  end
4

2 に答える 2

0

私はこのブログから問題を見つけました:http://library.edgecase.com/american-date-parsing#tldr

アメリカの日付形式を使っていたからです。参照された宝石を含めることによって、それは再び働き始めました。

于 2013-01-24T18:45:23.760 に答える
0

コメントに投稿しましたが、こちらが私の回答です。

enddateデータベースに保存したい場合startdateは、追加する必要がありますattr_accessible

attr_accessible :enddate, :startdate

アクションでこれらのパラメーターを受け取ることができる場合createdは、おそらく日付形式に問題があります。

また、モデルのこれらの属性のタイプがDate、Time...などであることを確認する必要があります。

よろしく!

于 2013-01-24T17:39:00.923 に答える