0

我有用户和组。

Users has_many :groups, :through => Membership
Groups has_many :users, :through => Membership

目前很好。成员资格现在有一个布尔字段,manager.

用户可以是组的管理员,组可以有多个管理员。在站点的任何地方,这都可以正常工作并且不会导致任何问题。现在他们需要以某种方式管理它。我正在使用 Active Admin (Formtastic) 并显示字段:as => :check_boxes

用户喜欢这些复选框。他们希望我在切换用户是否在组中的复选框旁边放置第二个复选框,以确定用户是否是该组的经理。

我怎么可能去做这件事?我曾尝试使用该f.has_many系统,但它会为每个现有成员创建一个条目,无法删除成员,这也不是用户想要的。我想显示每个用户,显示一个复选框以确定该配对是否存在成员资格,并在其旁边显示另一个复选框以获取经理字段的值。

4

1 回答 1

1

您想要的是在单击复选框时进行 AJAX 调用。假设您正在为您的 javacript 文件和 jQuery 使用咖啡脚本,以提供一般指南(未经测试),请在您的复选框上使用一个属性,如下所示:

<checkbox data-group=<%=group.id%> data-user=<%=user.id%> data-something="true">

然后,创建一个 javascript 函数来获取此数据,并在其上放置一个调用页面的函数:

$document.ready ->
  $(["data-something]").click ->
    user = this.attr("data-user")
    group = this.attr("data-group")
    $.post("/some/url", {value: this.value, user: user, group: group})

将路由添加到这个控制器,然后从这个 url 开始操作,简单处理逻辑

Class SomeController
  def url
    user = User.find(params[:user])
    ....
  end
end

如果您有更多问题,请稍后提出更具体的问题。

于 2013-03-28T22:27:45.157 回答