La disposition active de l'administrateur a été perdue après avoir remplacé l'action du contrôleur
-
28-10-2019 - |
Question
Ma nouvelle action de contrôleur:
controller do
layout 'active_admin'
def index
@pages = Page.all
end
end
Après avoir actualisé la page que j'ai reçue:
undefined method `base' for nil:NilClass
render view_factory.layout
Que dois-je faire pour réparer cela?
Je commence à réécrire l'action du contrôleur car j'ai reçu ce message pour mon index Action:
undefined method `num_pages' for #<Array:0x0000000b860eb0>
render renderer_for(:index)
Peut-être que quelqu'un sait comment réparer cela?
La solution
La première undefined method 'num_pages' for #<Array:0x0000000b860eb0>
peut se produire si vous avez une variable d'instance définie dans un before_filter
dans ApplicationController
avec le nom pluriel d'un modèle comme je l'ai fait. Le bug est signalé ici.
Autres conseils
Aurait besoin de voir le code sur la page de vue pour cela, mais il me semble que vous passez un appel pour num_pages
sur un objet qui est un array
classer. Puisque la classe Array de Ruby n'a pas num_pages
Méthode, il lance une erreur.
Jamie tu as raison! Mais ensuite j'ai reçu ce message pour mon index Action:
undefined local variable or method `per' for ActiveRecord::Relation
Et je résouse ce problème en faisant ceci:
# config/initializers/will_paginate.rb
if defined?(WillPaginate)
module WillPaginate
module ActiveRecord
module RelationMethods
alias_method :per, :per_page
alias_method :num_pages, :total_pages
end
end
end
end
Le bug est signalé ici.