Heroku Production Rails(3.2.3) Активный администратор (0.5) Глобализация 3 NoMethodError при создании и обновлении

Как я работаю на Active Admin(0.5) с Rails 3.2.3 Использование многоязычной поддержки с использованием Globalize 3 .

Когда я запускаю приложение в локальной среде разработки и производства, все работает отлично.

Но когда я развернул его в производственном режиме heroku, он выдает ошибку с тем же кодом, который я использую по сравнению с локальным.

Когда я нажимаю на создание новой страницы, это дает мне ошибку ниже:

NoMethodError in Admin::HomeTemplatesController#new

undefined method `build_app_page' for nil:NilClass
Rails.root: /app

Application Trace | Framework Trace | Full Trace
app/admin/home_templates.rb:16:in `new'

Пожалуйста, найдите ниже код

ActiveAdmin.register HomeTemplate do

    menu false
  config.clear_action_items!

    form :partial => "form"

    controller do
        protect_from_forgery :except => :sort

    def new
      # @home_template  =HomeTemplate.new
      # if !!current_ability.attributes_for(:create, HomeTemplate)[:app_instance_id]
      #   @valid_parents = AppPage.where("app_instance_id = ? AND parent_id IS NULL", current_ability.attributes_for(:create, HomeTemplate)[:app_instance_id])
      # end
      @home_template.build_app_page
    end

    def create

      # if !!current_ability.attributes_for(:create, HomeTemplate)[:app_instance_id]
      #   @valid_parents = AppPage.where("app_instance_id = ? AND parent_id IS NULL", current_ability.attributes_for(:create, HomeTemplate)[:app_instance_id])
      # end
      if @home_template.present?
      @home_template.app_page.protected = false;
      @home_template.app_page.hidden = false;
      @home_template.app_page.app_instance = @home_template.app_instance;
      create!
      end
    end

    def update
      #@home_template = HomeTemplate.find(params[:id])
      @valid_parents = AppPage.where("app_instance_id = ? AND parent_id IS NULL", @home_template.app_page.app_instance_id)
      update!
    end

    def edit
       # if !!current_ability.attributes_for(:edit, HomeTemplate)[:app_instance_id]
       #   @valid_parents = AppPage.where("app_instance_id = ? AND parent_id IS NULL", current_ability.attributes_for(:edit, HomeTemplate)[:app_instance_id])
       #   Rails.logger.info( @valid_parents)
       #   Rails.logger.info( current_ability.attributes_for(:edit, HomeTemplate)[:app_instance_id])
       # end
       Rails.logger.info( "Home template outside")
       #@home_template = HomeTemplate.find(params[:id])
       @valid_parents = AppPage.where("app_instance_id = ? AND parent_id IS NULL", @home_template.app_page.app_instance_id)
       Rails.logger.info(@valid_parents)
    end

  end

  collection_action :sort, :method => :post do
    if(params[:ids])
      params[:ids].each_with_index do |id, index|
        app_page = AppPage.find(id)
        app_page.move_to_child_of app_page.parent_id if can? :update, app_page.templatable
      end
    end
    head 200
  end

end

Я попытался соединиться с консолью через геройку и загрузить модели.

Я также проверил базу данных postgres по локальной в производственной оде, и все работало как шарм.

Прямо сейчас я использую Sqlite & postgres поверх local & heroku в качестве postgres.

Ваша помощь и руководство будут весьма ощутимы и заслуживают шляпы с моей стороны.

Пожалуйста, дайте мне знать, если потребуется более подробная информация.

Прямо сейчас использую Полиморфную Ассоциацию

как показано ниже

class HomeTemplate < ActiveRecord::Base

  include BelongsToAppInstance


  has_one :app_page, :as => :templatable
  has_many :home_banner_images, :dependent => :destroy

  accepts_nested_attributes_for :home_banner_images, :allow_destroy => true
  accepts_nested_attributes_for :app_page
  validates_presence_of :app_page

end

AppPages как:

class AppPage < ActiveRecord::Base

  include BelongsToAppInstance
  belongs_to :last_modified_by, :class_name => "AdminUser"
  validates_presence_of :last_modified_by

  belongs_to :templatable, :polymorphic => true, :dependent => :destroy
  has_many :app_page_callouts
  acts_as_nested_set

  attr_readonly :hidden
  attr_readonly :protected

  default_scope :order => 'lft ASC'

  validates_presence_of :name
  #validates_uniqueness_of :name, :scope => :app_instance_id
  validates_uniqueness_of :app_page_role, :scope => :app_instance_id

  mount_uploader :related_pdf, PdfUploader

  validate :parent_must_belong_to_same_app_instance
  #validates_inclusion_of :linked_model, :in => AppPage.allowable_linked_models, :unless => Proc.new {|app_page| app_page.linked_model.blank? }
  attr_accessible :name,:subtitle,:body,:app_page_attributes,
                  :app_instance_id,:app_page_role,:related_pdf,
                  :parent_id,:translations_attributes,
                  :last_modified_by,:app_instance,:sort,:view_controller,:hidden,:protected,:app_page_callouts,:parent
  active_admin_translates :name,:subtitle,:body
  #validates_globalized_uniqueness_of :name,:scope => :locale
  def parent_must_belong_to_same_app_instance
    if !self.parent_id.nil? && self.parent.app_instance_id != self.app_instance_id 
      errors.add(:parent_id, "The parent must belong to the same app instance.")
    end
  end
  def set_view_controller
    if self.view_controller.nil?
      self.view_controller = "detail"
    end
  end
end

На самом деле я использую активного администратора, и в этом мы нигде не определяем @home_tamplate, но в локальной или dev фазе он работает нормально, но когда я загрузил его в heroku, его ошибка начала броска. Иногда, когда я перезагружаю героку, это работает, но другие контроллеры перестают работать. Это происходит очень случайно по герою со всеми контроллерами. Я представил новый оператор & update, и когда я работал над этим, он работал для нового, но когда я представляю его, чтобы создать его снова, я получаю ноль home_template.......

0 ответов

Другие вопросы по тегам