ActiveAdmin / Formtastic Has Many Through с полем

У меня есть пользователи и группы.

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

Хорошо до сих пор. Членство теперь имеет логическое поле manager.

Пользователи могут быть менеджерами групп, а группы могут иметь более одного менеджера. Везде на сайте это работает нормально и не вызывает проблем. Теперь им нужно как-то управлять этим. Я использую Active Admin (Formtastic), и поля представлены :as => :check_boxes.

Пользователям нравятся флажки. Они хотят, чтобы я поставил второй флажок рядом с тем, который переключает, находится ли пользователь в группе, чтобы определить, является ли пользователь менеджером этой группы.

Как я могу это сделать? Я пытался использовать систему f.has_many, но она создает одну запись для каждого существующего членства, не дает возможности удалить членство и не является тем, чего хотят пользователи. Я хочу показать КАЖДОГО пользователя, показать флажок, чтобы определить, существует ли членство для этой пары, и показать другой флажок рядом с ним для значения поля менеджера.


person charredUtensil    schedule 28.03.2013    source источник


Ответы (1)


Что вы хотите, так это вызов AJAX при нажатии на флажок. Предполагая, что вы используете coffeescript для своих файлов 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

Если у вас возникнут дополнительные проблемы, задайте более конкретный вопрос позже.

person fotanus    schedule 28.03.2013