我目前正在使用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
我看到'100'表示puts语句的输出。有些人显然@colleges不是空的。
这是rabl索引模板:
puts "---===========================-"
puts @colleges.inspect
puts "---===========================-"
collection @colleges
在我的服务器输出中,我看到那些put语句看起来像:
---===========================-
nil
---===========================-
当我将@colleges转储到控制器中时,它肯定不是零。我无法弄清楚控制器和模板之间的数据发生了什么。
作为我的索赔来源的文件: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) }
密切注意符号前面的“:”。原因如下:
在任何渲染上下文之外编译模板的事实阻止我们在模板中使用任何实例变量(节点除外),因为它们是渲染对象。因此,您必须使用这些变量的符号。例如,要在PostController中呈现集合@posts,您需要在模板内部使用:@posts。