0

新しく生成されたスキャフォールドで厄介な問題が発生しました。すべてがうまく動作しますが、データを入力することはできますが、保存しようとするたびに、彼はnilを正常にコミットしました。すべてのフィールド。

このように見えます:

Started POST "/spraches" for 127.0.0.1 at 2012-08-26 23:34:03 +0200
Processing by SprachesController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"nMf1+rBegI9BKoSAekzq8iLPQPAHpiiPk2DlmhEQxsQ=", "sprache"=>{"name"=>"23", "level"=>"23", "zertifikat"=>"124", "zertifikat_anders"=>"213", "zertifikat_note"=>"f23"}, "commit"=>"Create Sprache"}
  [1m[36m (1.0ms)[0m  [1mBEGIN[0m
  [1m[35mSQL (29.0ms)[0m  INSERT INTO "spraches" ("created_at", "level", "name", "updated_at", "zertifikat", "zertifikat_anders", "zertifikat_note") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id"  [["created_at", Sun, 26 Aug 2012 21:34:03 UTC +00:00], ["level", nil], ["name", nil], ["updated_at", Sun, 26 Aug 2012 21:34:03 UTC +00:00], ["zertifikat", nil], ["zertifikat_anders", nil], ["zertifikat_note", nil]]
  [1m[36m (1.0ms)[0m  [1mCOMMIT[0m
Redirected to http://localhost:3000/spraches/1
Completed 302 Found in 35ms (ActiveRecord: 31.0ms)

コードを詳細に調べた後、理由がわかりやすくなりました。テーブルにドイツ語で名前を付け(Sprache-> Language)、Railsはそれを複数形に設定しようとしました。しかし、コントローラーはそれを単数形でしか持っていませんでした。

@sprach = Sprache.new(params[:sprach])

着信コードと一致するように、パラメーターに「e」を追加しました。動作します。

4

1 に答える 1

0

コードを詳細に調べた後、その理由は私にはわかりません。テーブルに名前を付け、German (Sprache -> Language)Railsがそれをに設定しようとしましたplural。しかし、コントローラーはそれをsingularフォームでしか持っていませんでした。

@sprach = Sprache.new(params[:sprach])

"e"着信コードと一致するようにパラメータにを追加しました。動作します。

于 2012-08-26T21:45:21.527 に答える