Ruby on rails RABL集合在模板中显示为空,但在控制器中不显示

Ruby on rails RABL集合在模板中显示为空,但在控制器中不显示,ruby-on-rails,json,rabl,Ruby On Rails,Json,Rabl,我目前正在使用rabl rails 0.5.3和rails 4.2.6 我遇到了这样一个问题,我试图从Rails控制器的索引方法呈现我的College对象集合 以下是我的控制器中索引方法的简化版本: def index @colleges = College.all puts @colleges.count render 'api/data_bridge/colleges/show' end 我看到puts语句的输出是'100'。有些大学显然不是空的 以下是

我目前正在使用rabl rails 0.5.3和rails 4.2.6

我遇到了这样一个问题,我试图从Rails控制器的索引方法呈现我的College对象集合

以下是我的控制器中索引方法的简化版本:

  def index
    @colleges = College.all

    puts @colleges.count

    render 'api/data_bridge/colleges/show'
  end
我看到puts语句的输出是'100'。有些大学显然不是空的

以下是rabl索引模板:

puts "---===========================-"
puts @colleges.inspect
puts "---===========================-"
collection @colleges
在我的服务器输出中,我看到这些puts语句如下所示:

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

当我在控制器中转储@colleges时,它肯定不是零。我无法找出控制器和模板之间的数据发生了什么情况。

作为我声明来源的文档:

您的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 在模板的内部


杰出的这让我更接近了。现在我得到一个关于“模型学院中表学院的主键未知”的错误。该模型的主键是“学院id”,而不是“id”。我尝试在模型中指定
set\u primary\u key='college\u id'
,但无论哪种方式都会出现相同的错误。如果我解决了您的原始问题,请将此标记为已解决!你真的应该遵守惯例。不要在模型中覆盖此选项。生成迁移
rails g migration AddPrimaryKeyToColleges id:primary\u key
。然后运行
railsdb:migrate
。如果不想迁移,则需要使用正确的语法:
self.primary\u key=“college\u id”
更改列primary id不是我的事。这是在我到达之前实施的,并且是我所在团队的大多数人坚决坚持的。事实上,考虑到我正在执行的任务,我无法更改数据库的任何内容--我只是从中读取数据。我将把这个标记为已解决。只是不想开口问另一个问题。。。