2011-11-12 26 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

最簡單的方式才達到你想要將

在你的模型是什麼:

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 
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 
+0

小更新:除了=綁定[:對象] .id.nil? ? 0:綁定[:object] .id – quatermain

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