Коллекция RABL отображается пустой в шаблоне, но не в контроллере - PullRequest
0 голосов
/ 21 марта 2019

В настоящее время я использую rabl-rails 0.5.3 и Rails 4.2.6

У меня есть эта проблема, когда я пытаюсь визуализировать коллекцию своих объектов College из метода index контроллера Rails.

Вот упрощенная версия метода индекса в моем контроллере:

  def index
    @colleges = College.all

    puts @colleges.count

    render 'api/data_bridge/colleges/show'
  end

Я вижу '100' для вывода оператора put там. Некоторые явно @colleges не пустые.

Вот шаблон индекса rabl:

puts "---===========================-"
puts @colleges.inspect
puts "---===========================-"
collection @colleges

В выводе моего сервера я вижу, что операторы put выглядят так:

---===========================-
nil
---===========================-

Когда я сбрасываю @colleges в контроллере, это определенно не ноль. Я не могу понять, что случилось с данными между контроллером и шаблоном.

1 Ответ

1 голос
/ 21 марта 2019

Документация как источник моих претензий: https://github.com/ccocchi/rabl-rails#overview

Ваш файл rabl должен выглядеть так:

puts "---===========================-"
puts :@colleges.inspect
puts "---===========================-"
collection :@colleges

Это был их пример:

# app/views/post/index.rabl
collection :@posts
attributes :id, :title, :subject
child(:user) { attributes :full_name }
node(:read) { |post| post.read_by?(@user) }

Обратите особое внимание на «:» перед символом. Вот почему:

Факт компиляции шаблона вне контекста рендеринга не позволяют нам использовать любые экземпляры переменных (за исключением узла) в шаблоне, потому что они представляют объекты. Так что вместо этого вы будете должны использовать символы этих переменных. Например, для визуализации коллекция @posts внутри вашего PostController, вам нужно использовать: @posts внутри шаблона.

...