2016-11-04 4 views
0

複数の入力のためのRailsのコントローラでのparamsを渡します。は、私は、次のHTMLを持っている私のユーザー編集フォームで自動的に

は通常、コントローラに私のような何かをするだろう:

@user = User.new(user_params) 

とされてのparams:

def user_params 
    params.require(:user).permit(:name, :email) 
end 

は、しかし、どのように私は役割の節約を扱うのですか?そして、手動で宣言することなくフォーム上のすべてのパラメータを自動保存することはできますか?

私はこの試みた:

if @user.update(params) 

をしかし、それは動作しませんでした。すべてのパラメータを正しいモデルに保存する方法はありますか?

答えて

3

user_paramsに配列を指定し、それが配列であることを指定する必要があります。

def user_params 
    params.require(:user).permit(:name, :email, role_ids: []) 
end 
+0

それは私にエラーを与えます: 'Role(#70231537324720)expected、got String(#70231444088680)' – Cameron

+0

ああ、はい、申し訳ありません、それは 'role'ではなく' role_ids'でした。回答が編集されました。それは改善しますか? – SteveTurczyn

+0

また、ビュー内の 'roles'を' role_ids'に変更しなければなりません。ありがとう。 – Cameron

0

あなたが本当にしたくない場合は、強力なパラメータを使用する必要はありません...

@user.update(params[:user])

それは非常にかかわらず、お勧めします。

+0

それは私にエラーを与える: 'ActiveModel :: ForbiddenAttributesError' – Cameron

関連する問題