0
我一直在努力与创建我的应用程序的角色的表证两个ID,我已经安装了宝石Rolify,它创造了一个示范作用,其中这是代码:与复选框
class Role < ActiveRecord::Base
has_and_belongs_to_many :users, :join_table => :users_roles
has_many :abilities
end
它还自动创建了连接表users_roles,它存储了用户的ID和我的数据库中存在的角色的ID。我创建了3个角色Admin
- Patient
- Doctor
。我的问题是我怎么能值传递给此:users_roles表在登记 检查盒%%在我的注册代码,我怎么能每次修改
<div class="form-group">
<%= f.label :roles %>
<% Role.all.each do |role| %>
<%= check_box_tag "user[role_ids][]", role.id, @user.role_ids.include(role.id)%>
<%= role.name %><br />
<% end %>
</div>
因此,在users_roles表我检查患者例如它与我的USER_ID和ROLE_ID该表的连接
我没有角色控制器首先,其次是我的用户控制器,这是我的代码
class UsersController < ApplicationController
before_filter :authenticate_user!
load_and_authorize_resource
def index
@users = User.all
end
def show
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
current_user.update(user_params)
end
def user_params
params[:user].permit(
{:role_ids => []}
)
end
end
这里代码基因以HTML格式复选框
<div class="form-group">
<label for="user_roles">Roles</label>
<input id="user_role_ids_" name="user[role_ids][]" type="checkbox" value="1" />
admin<br />
<input id="user_role_ids_" name="user[role_ids][]" type="checkbox" value="2" />
patient<br />
<input id="user_role_ids_" name="user[role_ids][]" type="checkbox" value="3" />
doctor<br />
</div>
在此先感谢!
你的代码看起来很好..你在控制器中添加了强大的参数:roles_ids => [] ..?或者是否有任何错误? –
你为什么要更新current_user而不是@user? –
您的使用'check_box_tag'的方法与[Rails文档](http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag)相当。你可以发布你的视图代码产生的HTML源代码吗?这会让你更容易猜到你应该从你的'POST'中期待什么样的'params'。 – Patru