2011-11-12 35 views
1

私はRails_Adminを試しています。記事のセットについては、私は祖先を使用しています。したがって、新しい&編集ページのドロップダウンリストを作成して、適切な親記事を選択できるようにしたいと考えています。祖先と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 

ので、かなり標準、除く:列挙型フィールド。私はここで何か間違っていなければならない。何か案は?

私はすでにHow to arrange entries from Ancestry tree in dropdown list in Rails 3?を見たことがありますが、間違っていない限り、彼らはかなりの質問をしています。私はアレンジ機能を利用したいと思います。

答えて

1

何をしたいachiveする最も簡単な方法は、お使いのモデルで

次のようになります。

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

field :parent_id, :enum do 
    enum do 
    Article.select(:id).map{|article| article.id} #this is just an example though 
    end 
end 
1

コンフィグrails_adminでモデルをconfig.modelする権利フィールドを追加

+0

でこれを置く:[:オブジェクト] =バインディングを除いては.id.nil? ? 0:bindings [:object] .id – quatermain

5

rails_admin:rails_admin_nestableで祖先を管理するためにこのプラグインを作成しました。
私は役に立つと思います。 enter image description here

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 
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 
関連する問題