Rails / ActiveAdmin - как передать пользовательские данные из контроллера в контент - PullRequest
0 голосов
/ 16 мая 2019

У меня есть пользовательская страница, которая собирается извлечь некоторые данные и отформатировать их, чтобы они могли отображаться в таблице. Это очень упрощенная версия:

ActiveAdmin.register_page "My Custom Page" do
  controller do
    @data = [
      { name: "foo"},
      { name: "bar"}
    ]
  end

  content do
    panel "My Panel" do
      table_for @data do
        column("Name") { |row| row[:name] }
      end
    end
  end
end

Когда я запускаю это, я получаю ошибку undefined method '[]' for nil:NilClass , потому что переменная row, переданная в блок, равна нулю. Как правильно передать объект @data в представление?

1 Ответ

1 голос
/ 17 мая 2019

Вы можете загрузить данные в представлении.При этом вы можете получить доступ к params, как к контроллеру.

content do
  data = Entity.find(params[:id]
end

Это не способ Rails, но я думаю, что в ActiveAdmin это совершенно нормально.Если у вас есть более сложные данные для загрузки и обработки, вы можете создать для них сервис.

Если вы чувствуете, что вам нужно использовать контроллер, вы должны сделать это так:

controller do
  def index 
    # your code
  end
end

Интересно, что вам даже не нужно звонить super - страница отображается в любом случае.

...