質問

いレール形状のdatetime_selectます。またフォームの送信は、以下の例外:

ActiveRecord::MultiparameterAssignmentErrors in WidgetsController#update 
1 error(s) on assignment of multiparameter attributes

の場合は、検証エラーがないのページに表示すべき事は何か?

これはレール2.0.2

役に立ちましたか?

解決

そのレールを使ったマルチパラメータの配信日時に小さな部品に再構築ときに割り当てのパラメータのモデルインスタンス.

私の問題を使用していましたがdatetime_selectフォームフィールドのための日程モデル。もあるそうですchokesのマルチパラメータのマジックという設定の期日オブジェクトです。

この溶液を使用 date_select フォームフィールドではなく datetime_select.

他のヒント

スーパーハックがもらえますが、僕がこの問題をすぐにクライアントプロジェクト.まだまだバグレールは2.3.5.

のいずれかを使 date_select または datetime_select, た場合、追加することのできるモデルの initialize 方法で事前に構文解析の過形-直列化された属性はそれを動作させるために:

def initialize(attributes={})
  date_hack(attributes, "deliver_date")
  super(attributes)
end

def date_hack(attributes, property)
  keys, values = [], []
  attributes.each_key {|k| keys << k if k =~ /#{property}/ }.sort
  keys.each { |k| values << attributes[k]; attributes.delete(k); }
  attributes[property] = values.join("-")
end

私はこれを使って、入れ子,多様な機種です。 ここで問題なかったのモデルを使用してい.いが必要 accepts_nested_attributes_for とdatetime.

この入力および出力用のコンソール:

e = Event.last
=> #<Event id: 1052158304 ...>
e.model_surveys
=> []
e.model_surveys_attributes = [{"survey_id"=>"864743981", "deliver_date(1i)"=>"2010", "deliver_date(2i)"=>"2", "deliver_date(3i)"=>"11"}]
PRE ATTRIBUTES: {"survey_id"=>"864743981", "deliver_date(1i)"=>"2010", "deliver_date(2i)"=>"2", "deliver_date(3i)"=>"11"}
# run date_hack
POST ATTRIBUTES: {"survey_id"=>"864743981", "deliver_date"=>"2010-2-11"}
e.model_surveys
=> [#<ModelSurvey id: 121, ..., deliver_date: "2010-02-11 05:00:00">]
>> e.model_surveys.last.deliver_date.class
=> ActiveSupport::TimeWithZone

それ以外の場合はnullの場合、またはこのエラー:

1 error(s) on assignment of multiparameter attributes

いーす ランス

このプログラムにバグレールでの挙動のマルチパラメータの属性のライター。私は喜んでベットのポスターのdeliver_date分野のデータベースはvarcharに対して、日付または日付時刻タイプです。ActiveRecordを使いのマルチパラメータの属性送信の新しい方法の直列化されたタイプです。その数は1、2、3、などのコンストラクタのパラメータの"i"かActiveRecordコto_iのパラメータを渡す前に、コンストラクタです。この場合はい"i"がDateTime.新年、月、日を見込んでは三つの整数が与えない三文字列です。

場合にはdeliver_date列データベースになるタイプの直列化された日付時刻をActiveRecordするActiveRecord::MultiparameterAssignmentErrors例外が文字列になります。新2010,2,11)な成功は難しいと考えられる。

ソース:https://github.com/rails/rails/blob/v3.0.4/activerecord/lib/active_record/base.rb#L1739

ActiveRecordにするMultiparameterAssignmentErrorsを除き無効な日付は、モデルの属性。

み直月31日からdate_selectはdatetime_selectドロップダウン、またこのエラーになります。

のようにZubinいにこの例外時に届け出として月月より、数ヶ月の文字列(例.月より10)となります。

一ユーザーエージェントっそうの提出内容のオプションタグのvalue属性:

Mozilla/5.0(SymbianOS/9.2;U;Series60/3.1NokiaE66-1/300.21.012;プロフィール/MIDP-2.0 の設定/CLDC-1.1) AppleWebKit/413(KHTMLのように、ゲ) サファリ/413

その場合は提出のマルチパラメータの日付から発生するヘルパーの選択からdate_selectヘルパー)paramsります:

"event"=> {
    "start_on(2i)"=>"October",
    "start_on(3i)"=>"19",
    "start_on(1i)"=>"2010"
}

この例外: ActiveRecord::MultiparameterAssignmentErrors:1エラー("s")に譲渡して、多項目の属性

最もユーザーエージェントが正しく提出:

"event"=> {
    "start_on(2i)"=>"10",
    "start_on(3i)"=>"19",
    "start_on(1i)"=>"2010"
}

このエラーで起こるwebrat/きゅうりの場合記入フォームのデータを使用します。

例えばこれは当てはまりませんの仕事:

When I fill in the following:
  | report_from_1i | 2010     |
  | report_from_2i | January  |
  | report_from_3i | 1        |
  | report_to_1i   | 2010     |
  | report_to_2i   | February |
  | report_to_3i   | 1        |

しかし、これは:

When I fill in the following:
  | report_from_1i | 2010 |
  | report_from_2i | 1    |
  | report_from_3i | 1    |
  | report_to_1i   | 2010 |
  | report_to_2i   | 2    |
  | report_to_3i   | 1    |

私の場合、ActiveRecord am/pmプラグインによりエラーを通じて間違った alias_method_chain による StackLevelTooDeep ます。

プラグインに含めていたのunobtrusive_date_pickerの引き出しおよび設定ができます

のう前に、このハッキングです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top