2016-07-11 4 views
1

私はハッシュに入っている属性でモデルを更新しようとしているレールアプリを持っています。Rails update_attributes with dynamic hash

私のコードは次のとおりです。ここで

attr_hash = {"name"=>"cat_name"} 

@category.update_attributes(attr_hash, :type => 'sample') 

は、私はそのタイプが固定され、attrのハッシュが提出フォーム上の任意の属性ベース可能欲しいものです。しかし、これは私にエラーを与える。何か案は?

答えて

2
attr_hash = {"name"=>"cat_name"} 

@category.update_attributes(attr_hash.merge(type: "sample")) 

update_attributesが一つだけのハッシュを取るため)

説明:

現在あなたがこの渡している:

update_attributes({"name"=>"cat_name"}, {type: "sample"})

をしかし、あなたはこれをしたい:

update_attributes({"name"=>"cat_name", type: "sample"})

これらの2つのハッシュをマージする必要があります。

+0

更新メソッドにハッシュ変数を配置しようとすると、ActiveModel :: ForbiddenAttributesErrorが表示されます。 – user4965201

+0

あなたの@categoryは 'name'列と' type'列を持っていますか? コントローラコード全体を共有してください。私はあなたが渡したいパラメータを必要としないと仮定します.. あなたは 'params [" category "] [" name "]'のようなものを持っていますが、次のようにしなければなりません: 'params.require(:category ).permit(:name) ' – siegy22

+0

私はホワイトリストに入れられたparamsをhavent ...私の悪い – user4965201

関連する問題