2015-07-09 1 views
0

Я пытаюсь настроить поля вложенной модели в ассоциации :has_many, но ничего не происходит. Я нахожусь на Rails 4.2.3, mongoid 4.0.2, rails_admin 0.6.8.rails_admin не может изменять поля вложенной модели с помощью связанного_model_config

Property имеет много Characteristic с, Product имеет и принадлежит многим Characteristic с:

/app/models/property.rb

class Property 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    field :handle 
    field :title, localize: true 

    has_many :characteristics, inverse_of: :property 
    accepts_nested_attributes_for :characteristics, allow_destroy: true 

    validates :handle, presence: true 
    validates :title, presence: true 
end 

/app/models/characteristic.rb

class Characteristic 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    field :handle 
    field :title, localize: true 

    belongs_to :property, inverse_of: :characteristics 

    has_and_belongs_to_many :products 

    validates :property, presence: true 
    validates :handle, presence: true 
    validates :title, presence: true 
end 

/app/models/product.rb

class Product 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    field :handle 
    field :title, localize: true 
    field :page_title, localize: true 
    field :description, localize: true 
    field :short_description, localize: true 
    field :meta_description, localize: true 
    field :meta_keywords, localize: true 

    has_and_belongs_to_many :characteristics 

    validates :handle, presence: true 
    validates :title, presence: true 
end 

/config/initializers/rails_admin.rb

require 'i18n' 

I18n.available_locales = [:ru, :en] 
I18n.default_locale = :ru 

RailsAdmin.config do |config| 
    config.main_app_name = Proc.new { |controller| [ "Babylon", "BackOffice - #{controller.params[:action].try(:titleize)}" ] } 

    config.actions do 
    dashboard 
    index 
    nestable 
    new 
    export 
    bulk_delete 
    # show 
    edit 
    delete 
    show_in_app 

    ## With an audit adapter, you can add: 
    # history_index 
    # history_show 
    end 

    config.model Characteristic do 
    visible false 
    label I18n.t(:characteristic).capitalize 
    label_plural I18n.t(:characteristics).capitalize 

    object_label_method do 
     :i18n_characteristic 
    end 

    create do 
     field :title do 
     label I18n.t(:title) 
     end 
    end 

    update do 
     field :title do 
     label I18n.t(:title) 
     end 
    end 
    end 

    config.model Property do 
    visible true 
    label I18n.t(:property).capitalize 
    label_plural I18n.t(:properties).capitalize 

    object_label_method do 
     :i18n_property 
    end 

    list do 
     field :title do 
     label I18n.t(:title).capitalize 

     formatted_value do 
      bindings[:view].link_to value[I18n.locale], bindings[:view].rails_admin.edit_path(model_name: 'property', id: bindings[:object]._id.to_s) 
     end 
     end 
     field :handle do 
     label I18n.t(:handle).capitalize 
     end 
    end 

    create do 
     field :title do 
     label I18n.t(:title) 
     end 

     group I18n.t(:seo).upcase! do 
     field :handle do 
      label I18n.t(:handle) 
     end 
     end 

     group I18n.t(:characteristics).capitalize do 
     field :characteristics do 
      label I18n.t(:characteristics) 

      associated_model_config do 
      field :title do 
       label I18n.t(:title).capitalize 
      end 
      end 
     end 
     end 
    end 

    update do 
     field :title do 
     label I18n.t(:title) 
     end 

     group I18n.t(:seo).upcase! do 
     field :handle do 
      label I18n.t(:handle) 
     end 
     end 

     group I18n.t(:characteristics).capitalize do 
     field :characteristics do 
      label I18n.t(:characteristics) 

      associated_model_config do 

      field :title do 
       label I18n.t(:title).capitalize 
      end 
      end 
     end 
     end 
    end 
    end 

    ... 
end 

def i18n_property 
    title_translations[I18n.locale] 
end 
def i18n_characteristic 
    title_translations[I18n.locale] 
end 

Итак, как вы видите, я пытался настроить поля Characteristic модели в 2 места, чтобы показать только поле :title, но оно по-прежнему автоматически отображает все, что он может извлечь из модели, и даже не переводит:

enter image description here

Пожалуйста, помогите найти решение для отображения вложенных полей вправо! Спасибо.

ответ

0

Хорошо, все из-за неправильного порядка. Чтобы все работало правильно, заказ должен быть сначала Property, и только тогда Characteristic. Хотелось бы, чтобы это было упомянуто в официальном чтении.