Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改用户';通过下拉菜单和Ajax设置角色_Javascript_Ruby On Rails_Ajax_Ruby On Rails 4 - Fatal编程技术网

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