5

railscast#238 を試しています。Rails 4 と mongoid(4.0.0) を使用しています。date_select ヘルパーで published_on フィールドを追加しようとすると。コレクションに保存できません。次に、permit 関数に :published_on を追加しました。しかし、その後もエラーが発生しています。Mongoid::MultiParameterAttributes も含めてみましたが、見つかりません。モンゴイドから削除されたと思います。以下は、ログ ファイルのエラーです。

ログファイル

HTML パラメーターとして ArticlesController#update で処理: {"utf8"=>"✓", "authenticity_token"=>"3+y5UUckEDqJRPwdibdlhwAxKHi1g2ECF/4SzFNVbJE=", "article"=>{"name"=>"sachin", "published_on (1i)"=>"2013", "published_on(2i)"=>"4", "published_on(3i)"=>"10", "content"=>"s'up?"}, "commit" =>"Update Article", "id"=>"522f4ce6f0b1817131000001"} MOPED: 127.0.0.1:27017 QUERY database=mongs_development collection=articles selector={"_id"=>"522f4ce6f0b1817131000001"} flags=[:slave_ok] limit= 0 skip=0 batch_size=nil fields=nil (0.5178ms) 完了 500 Internal Server Error in 3ms

Mongoid::Errors::UnknownAttribute (問題: モデル記事で許可されていない 'published_on(1i)' の値を設定しようとしました。概要: Mongoid::Attributes::Dynamic をモデルに含めず、属性がArticle#published_on(1i)= for it is not allowed. これは、属性ハッシュを受け入れる任意のメソッドに属性を渡すことによってもトリガーされ、NoMethodError を取得する代わりに発生します。 : 未定義フィールドの値を頻繁に書き込むことが予想される場合は、Mongoid::Attributes::Dynamic を含めることができます。): app/controllers/articles_controller.rb:44:in block in update' app/controllers/articles_controller.rb:43:inupdate'

許可から published_on を削除した場合:

パラメーター: {"utf8"=>"✓", "authenticity_token"=>"3+y5UUckEDqJRPwdibdlhwAxKHi1g2ECF/4SzFNVbJE=", "article"=>{"name"=>"sachin", "published_on(1i)"=>" 2013", "published_on(2i)"=>"9", "published_on(3i)"=>"10", "content"=>"s'up?"}, "commit"=>"Update Article", "id"=>"522f4ce6f0b1817131000001"} MOPED: 127.0.0.1:27017 COMMAND database=admin コマンド={:ismaster=>1} (0.6187ms) MOPED: 127.0.0.1:27017 QUERY database=mongs_development collection=articles selector={ "_id"=>"522f4ce6f0b1817131000001"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.2012ms) 許可されていないパラメータ:published_on(1i)、published_on(2i)、published_on(3i) にリダイレクト

       http://localhost:3000/articles/522f4ce6f0b1817131000001

完了 302 発見 5 ミリ秒

2013-09-10 23:19:34 +0530 で 127.0.0.1 の GET "/articles/522f4ce6f0b1817131000001" を開始27017 QUERY database=mongs_development collection=articles selector={"_id"=>"522f4ce6f0b1817131000001"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.3569ms) レンダリングされた article/show.html.erbレイアウト/アプリケーション内 (0.6ms) 9ms で 200 OK を完了 (ビュー: 7.4ms)

誰かがこれに対する解決策を提供できますか?

4

2 に答える 2

2

Mongoid::MultiParameterAttributesドキュメント クラスに含める必要があります。

Mongoid 4.0 では、そのモジュールを yor フォルダーで定義する必要もありlib/ます。このブログで詳細な説明を参照してください

于 2013-11-21T12:40:38.697 に答える
0

私はあなたが機能を持っているに違いない

def article_params params.require(:article).permit!(:published_on) end

しかし、あなたも必要です...

Article.create(article_params)

いいえ

Article.create(params[:article])

お役に立てれば、

-ブライアン

于 2013-11-04T17:02:58.900 に答える