1

Rails_Admin を試しています。一連の記事では、祖先を使用しています。したがって、新規編集ページにドロップダウン リストを作成して、適切な親記事を選択できるようにしたいと考えています。

私の現在の設定:

  config.model Article do
  #   # Found associations:

    # Found columns:
      field :id, :integer 
      field :title, :string 
      field :description, :text 
      field :content, :text do
        ckeditor true
      end
      #field :created_at, :datetime 
      #field :updated_at, :datetime 
      field :ancestry, :enum do
        @articles = Article.scoped
        @articles.arrange(:order => :created_at)
      end
    # Sections:
    list do; end
    export do; end
    show do; end
    edit do; end
    create do; end
    update do; end
  end

したがって、:enum フィールドを除いて、かなり標準的です。私はここで何か間違ったことをしているに違いありません。何か案は?

Rails 3のドロップダウンリストでAncestryツリーからエントリを配置する方法はすでに見ましたか? しかし、私が間違っていない限り、彼らが行っているのはかなりの数のクエリです。アレンジ機能を活用したい。

4

5 に答える 5

5

rails_admin: rails_admin_nestableで祖先を管理するプラグインを作成しました。
役立つことを願っています。 ここに画像の説明を入力

于 2012-10-14T10:49:51.127 に答える
1

あなたが望むものを達成する最も簡単な方法は

あなたのモデルでは:

class Article < ActiveRecord::Base
  has_ancestry
  attr_accessor :parent_id
  #...
end

次に正しいフィールドを config.model に追加します

field :parent_id, :enum do
  enum do
    Article.select(:id).map{|article| article.id} #this is just an example though
  end
end
于 2011-11-17T21:56:54.790 に答える
1

次のように rails_admin でモデルを構成します。

  config.model Article do
    list do
      field :title
      field :parent do
        formatted_value do
          value.title if value
        end
      end
    end

    show do
      field :title
      field :parent do
        formatted_value do
          value.title if value
        end
      end
    end

    edit do
      field :title
      field :ancestry, :enum do
        enum do
          except = bindings[:object].id
          Article.where("id != ?", except).map { |c| [ c.title, c.id ] }
        end
      end
    end
  end
于 2011-12-23T08:52:56.207 に答える
0

実際、私にとっての解決策は次のとおりです。

before_validation :check_ancestry

def check_ancestry
  if self.ancestry.blank?
    self.ancestry=nil
  end
end

def percorso
  p=""
  self.ancestors.each do |n|
    p+=n.title + " -> "
  end
  p+=self.title
end

rails_admin do
  edit do
    field :ancestry, :enum do
      enum do
        except = bindings[:object].id.nil? ? 0 : bindings[:object].id
        Article.where("id != ?", except).map { |c| [ c.percorso, c.ancestry? ? "#{c.ancestry}/#{c.id}":"#{c.id}" ]}
      end
    end
  end
end
于 2013-09-09T08:43:43.307 に答える