gpt4 book ai didi

ruby-on-rails - 如何使用 Rails Form 和 Role Model Gem 添加多个角色

转载 作者:太空宇宙 更新时间:2023-11-03 16:19:19 24 4
gpt4 key购买 nike

您好,我有一个角色应用程序,用户可以在其中拥有多个角色。我正在使用角色模型 Gem。如下所示:

4.2.5@2.2.4 (main)> User.valid_roles
=> [
[0] :admin,
[1] :report_writer,
[2] :candidate,
[3] :client_contact
]

我想要一个可以为用户选择多个角色的复选框表单。我已经尝试了一个小时,但无法弄清楚。谁能帮忙?

这是表格

%h1 Edit User

= form_for @user, url: admin_user_path(@user) do |f|

.form-group
= f.label :first_name
= f.text_field :first_name

.form-group
= f.label :last_name
= f.text_field :last_name

.form-group
= f.label :email
= f.text_field :email

.form-group
= f.label :password
= f.password_field :password

.form-actions
= link_to "Cancel", admin_users_path, class: "btn btn-grey"
= f.submit class: "btn btn-primary pull-right"

最佳答案

还没有使用 role_model gem,但正在查看 docs ,以下应该有效:

<%= form_for @user, url: admin_user_path(@user) do |f| %>
...
<div class='form-group'>
<% User.valid_roles.each do |valid_role| %>
<div>
<%= valid_role.humanize %>
<%= f.check_box :roles, multiple: true, valid_role %>
</div>
<% end %>
</div>
...
<% end %>

提交表单后,您的服务器应收到以下参数(例如同时选中“admin”和“client_contact”):

{
user: {
first_name: '...',
last_name: '...',
email: '...',
password: '...',
roles: [
'admin',
'client_contact'
]
}
}

不要忘记将 roles: [] 包含在强参数中。示例如下:

用户 Controller .rb

def create
@user = User.new(user_params)
...
end

...

private

def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password, roles: [])
end

关于ruby-on-rails - 如何使用 Rails Form 和 Role Model Gem 添加多个角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37151214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com