Javascript 更改用户';通过下拉菜单和Ajax设置角色
我有一个站点,其中用户模型具有Javascript 更改用户';通过下拉菜单和Ajax设置角色,javascript,ruby-on-rails,ajax,ruby-on-rails-4,Javascript,Ruby On Rails,Ajax,Ruby On Rails 4,我有一个站点,其中用户模型具有角色id属性。角色表中当前有三个角色: ID NAME 1 user 2 manager 3 admin 在站点的管理部分,有一个包含用户列表的表。我试图为每个用户提供一个下拉菜单,用户的角色可以通过ajax请求更改。此下拉列表还需要根据可用角色动态填充其可能的值。例如,如果以后添加了foobar角色,则下拉菜单应反映这一点 后端部分似乎很简单:在UsersController中编写一个change\u role方法(操作前使用:is
角色id
属性。角色表中当前有三个角色:
ID NAME
1 user
2 manager
3 admin
在站点的管理部分,有一个包含用户列表的表。我试图为每个用户提供一个下拉菜单,用户的角色可以通过ajax请求更改。此下拉列表还需要根据可用角色动态填充其可能的值。例如,如果以后添加了foobar
角色,则下拉菜单应反映这一点
后端部分似乎很简单:在UsersController中编写一个
change\u role
方法(操作前使用:is\u admin
),并让它在respond\u to
块中处理ajax请求。我只是想弄清楚如何使用Rails助手和不引人注目的JS(remote:true)以干净的方式构建前端。这可能吗?这里有一个简单的例子。警告:这不包括错误处理,我建议您根据应用程序自行构建。它还假设您知道如何连接路由等。您可能希望在JS中动态获取users\u路径。查看gon
gem了解更多信息
app/assets/javascripts/users.coffee
看法
$(".role-select").on "change", ->
user_id = $(this).data("user-id")
role_id = $(this).val()
$.post "/users/#{user_id}/update_role",
role_id: role_id
<select class='role-select' data-user-id={user.id}>
[...]
</select>
def update_role
respond_to do |format|
format.js do
@user = User.find(params[:id])
@user.update(role_id: params[:role_id])
# manage return status here
head :ok
end
end
end