javascript - 通过下拉菜单和 Ajax 更改用户的角色

标签 javascript ruby-on-rails ajax ruby-on-rails-4

我有一个站点,其中 User 模型具有 role_id 属性。 Roles表中目前有3个 Angular 色:

ID    NAME
1     user
2     manager
3     admin

在站点的管理部分,有一个包含用户列表的表格。我想要做的是为每个用户提供一个下拉菜单,用户的 Angular 色可以通过 ajax 请求更改。此下拉列表还需要根据可用 Angular 色动态填充其可能的值。例如,如果稍后添加了 foobar Angular 色,下拉菜单应该反射(reflect)出来。

后端部分似乎足够直接:在 UsersController 中编写一个 change_role 方法(使用 before_action: is_admin)并拥有它在 respond_to block 中处理 ajax 请求。我只是想弄清楚如何使用 Rails 助手和 Unobtrusive JS(远程:true)以一种干净的方式构建前端。这可能吗?

最佳答案

这是一个简单的例子。警告:这不包括错误处理,我建议您根据您的应用程序自行构建。它还假定您知道如何连接路由等。您可能希望在 JS 中动态获取 users_path。查看 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>

Controller

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

关于javascript - 通过下拉菜单和 Ajax 更改用户的角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23966198/

相关文章:

javascript - rails : javascript_include_tag :all purpose?

ruby-on-rails - Ruby On Rails 和 "external classes"

ajax - 如何使用 async = true 在 Dart 中使用 AJAX

javascript - jquery:如何等到ajax调用完成

javascript - 我想在 ember.js 的示例待办事项应用程序中嵌套待办事项

javascript - 在 jQuery Radio 选项状态更改中使用 every() 的问题

ruby-on-rails - 在 ruby​​ 中解析 json 以进行排序、过滤等

javascript - 如何设置存储在 JS 变量中的 div 类的样式?

javascript - 添加类时 Firefox 转换

javascript - 如何在 JSON 对象中向 JStree 插件的子级添加 href 链接?