8

新しい Rails gem http://activeadmin.info/を試していますが、うまく機能しています。ただし、関連付け間で使用する方法に関するドキュメントは見つかりません。例えば:

class Membership < ActiveRecord::Base
  belongs_to :course
  belongs_to :person

class Course < ActiveRecord::Base
  has_many :memberships
  has_many :people,  :through => :memberships

class Person < ActiveRecord::Base
  has_many :memberships
  has_many :courses, :through => :memberships

メンバーシップ結合テーブルには、いくつかの追加データ (出席など) も含まれています。コース名と学生名の両方でメンバーシップを表示しようとしています-そして、それらの名前でフィルタリング/ソートを許可します。私が見つけた限りでは、Active Admin は関連付けを超えて機能しません。他の誰かがそれを行うことに成功しましたか、またはそうする別の宝石を見つけましたか? 本当にありがとう!

4

4 に答える 4

5

成分.rb

class Ingredient < ActiveRecord::Base
has_and_belongs_to_many :products, :join_table => :ingredients_products
end

product.rb

class Product < ActiveRecord::Base
  has_and_belongs_to_many :ingredients, :join_table => :ingredients_products
end

結合テーブルの移行を忘れないでください (:id から false!)

class CreateProductsIngredients < ActiveRecord::Migration
  def self.up
    create_table :ingredients_products,:id => false do |t|
      t.integer :product_id
      t.integer :ingredient_id
      t.timestamps
    end
  end

  def self.down
    drop_table :products_ingredients
  end
end

ActiveAdmin リソースでフォームを定義し、デフォルトを上書きします

ActiveAdmin.register Product do
  form do |f|
        f.inputs "Details" do
          f.input :product_name
          f.input :brand
          f.input :ingredients # don't forget this one!
        end
end
于 2011-05-20T22:36:29.173 に答える
4

私はしばらく ActiveAdmin をいじっていますが、インデックスとフォームで関連付けを機能させる方法を以下に示します。

以下のモデル列のいくつかを推測しました。また、フォームに注意してください。「人」セクションには編集用のすべての列が表示されますが、「コース」セクションには指定された列のみが表示されます。

ActiveAdmin.register User do
    index do
        column :id
        column :name
        column :attendance
        column :person do |membership|
            membership.person.name
        end
        column :course do |membership|
            membership.course.name
        end
        default_actions
    end

    form do |f|
        f.inputs "Membership" do
            f.input :name
            f.input :created_at
            f.input :updated_at
        end
        f.inputs :name => "Person", :for => :person do |person|
            person.inputs
        end
        f.inputs :name => "Course", :for => :course do |course|
            course.input :name
        end
        f.buttons
    end
end

私はこれをテストしていませんが、これらのアイデアをあなたのケースに適用できるはずです。それは私のために働いています。

更新:あなたの質問をもう一度読んだところ、関連付け列で並べ替えできるようにしたいことがわかりました。実装を確認したところ、これは実際には機能していません。私の答えは役に立たないかもしれませんが、とにかくここに残します(他の人を助けるかもしれません)。

于 2011-06-14T03:03:26.667 に答える
1

私はこの宝石を自分で使い始めたばかりで、関連付け情報を表示するまでには至っていませんが、関連付け用のフォームを作成する方法は次のとおりです。

form do |f|
  f.inputs

  f.has_many :associations do |association|
     association.inputs
  end

  f.buttons
end

これにより、足場を備えた基本的なフォームが得られます。

于 2011-05-29T17:19:21.747 に答える