Ruby on Rails - неопределенный метод Active Admin "кроме" для # - PullRequest
0 голосов
/ 02 октября 2018

Я получаю сообщение об ошибке в Active Admin, когда я помещаю некоторый код в мой application_controller.rb.Ошибка (когда я пытаюсь получить доступ к HomeConfig в активном администраторе):

undefined method 'except' for #<HomeConfig:0x007f8877cfda58>

В этом случае ошибка возникает, когда я помещаю этот код в application_controller.rb:

class ApplicationController < ActionController::Base

  protect_from_forgery with: :exception

  # Code that cause the problem
  before_filter :contact_info, :home_config

  def contact_info
    @contact_infos = ContactInfo.all
  end

  def home_config
    @home_configs = HomeConfig.last
  end
end

И журнал ошибок в терминале:

Started GET "/alumni/admin/home_configs" for 127.0.0.1 at 2018-10-02 09:07:38 -0300
Processing by Admin::HomeConfigsController#index as HTML
  HomeConfig Load (0.4ms)  SELECT  `home_configs`.* FROM `home_configs`   ORDER BY `home_configs`.`id` DESC LIMIT 1
  AdminUser Load (0.3ms)  SELECT  `admin_users`.* FROM `admin_users`  WHERE `admin_users`.`id` = 1  ORDER BY `admin_users`.`id` ASC LIMIT 1
  Rendered /Users/Atua/.rvm/gems/ruby-2.1.3@facensAlumni/bundler/gems/activeadmin-dce083189c46/app/views/active_admin/resource/index.html.arb (598.9ms)
Completed 500 Internal Server Error in 644ms

NoMethodError - undefined method `except' for #<HomeConfig:0x007f887c002d58>:

Started POST "/__better_errors/32ad65699eb25cf6/variables" for 127.0.0.1 at 2018-10-02 09:07:39 -0300
  ContactInfo Load (0.3ms)  SELECT `contact_infos`.* FROM `contact_infos`

Если я заберу этот код и перезапущу сервер, все работает нормально.Кто-нибудь знает, что происходит?

Спасибо.

1 Ответ

0 голосов
/ 02 октября 2018
@home_configs = HomeConfig.last

Это создает ошибку.ActiveAdmin ожидает, что @home_configs будет массивом.В то время как ваш код HomeConfig.last возвращает только последний HomeConfig.

Вам нужно изменить HomeConfig.last на что-то вроде: HomeConfig.all.

Попробуйте и отзывы.

...