在我的用户编辑表单中,我有以下HTML:
<p>Name: <%= f.text_field :name %></p>
<p>Email: <%= f.text_field :email %></p>
<% for role in Role.all %>
<p>
<%= check_box_tag "user[roles][]", role.id, @user.roles.include?(role) %>
<%= role.name %>
</p>
<% end %>
所以我有name
,email
和一堆关联的roles
。
通常在控制器中我会做类似的事情:
@user = User.new(user_params)
和params是:
def user_params
params.require(:user).permit(:name, :email)
end
但是,如何处理角色的保存?我可以自动保存表单上的所有参数,而无需手动声明它们。
我试过了:
if @user.update(params)
但它没有用。有没有办法将所有参数保存到正确的模型中?
答案 0 :(得分:3)
您需要在user_params中指定数组,并指定它是一个数组。
def user_params
params.require(:user).permit(:name, :email, role_ids: [])
end
答案 1 :(得分:0)
如果你真的不想......
,你不必使用强参数 @user.update(params[:user])
但强烈推荐。为了安全起见