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 的下拉列表中看到了如何从祖先树中排列条目?但除非我弄错了他们正在做的一些查询。我想利用排列功能。

4

5 回答 5

5

我编写了这个插件来使用 rails_admin: rails_admin_nestable管理祖先。
我希望会有用。 在此处输入图像描述

于 2012-10-14T10:49:51.127 回答
1

Config the model in rails_admin as follows:

  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 回答
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 回答
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 回答
0

我把这个放在我的config/initializers/rails_admin.rb

    config.model 'MyModel' do
      edit do
        include_all_fields
        field :parent_id, :enum do
          enum do
            MyModel.all.map{|model| [model.name, model.id ]}.to_a
          end
        end
       exclude_fields :ancestry
      end
    end 
于 2017-09-17T10:04:43.760 回答