0

ユーザーとグループがあります。

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

これまでのところ良い。メンバーシップにブール フィールド が追加されましたmanager

ユーザーはグループのマネージャーになることができ、グループは複数のマネージャーを持つことができます。サイトのどこでも、これは正常に機能し、問題は発生しません。今、彼らはこれをどうにかして管理する必要があります。Active Admin (Formtastic) を使用しており、フィールドが表示されています:as => :check_boxes

ユーザーはチェックボックスが好きです。彼らは、ユーザーがグループのマネージャーであるかどうかを判断するために、ユーザーがグループに属しているかどうかを切り替えるチェック ボックスの横に 2 番目のチェック ボックスを配置することを望んでいます。

どうすればこれについて行くことができますか?システムを使用してみましf.has_manyたが、既存のメンバーシップごとに 1 つのエントリが作成され、メンバーシップを削除する方法がなく、ユーザーが望んでいるものではありません。すべてのユーザーを表示し、そのペアリングにメンバーシップが存在するかどうかを確認するチェック ボックスを表示し、その横にマネージャー フィールドの値を示す別のチェック ボックスを表示します。

4

1 に答える 1

1

あなたが望むのは、チェックボックスをクリックしたときに AJAX 呼び出しを行うことです。javacript ファイルと jQuery に coffeescript を使用していると仮定すると、一般的なガイドライン (テストされていません) を示すために、次のようにチェックボックスで属性を使用します。

<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 に答える