Sun*_*day 19 ruby rendering rabl
我有一个ruby哈希,我想用RABL渲染.哈希看起来像这样:
@my_hash = {
    :c => {
        :d => "e"
    }
}
我试图用一些RABL代码渲染它:
object @my_hash => :some_object
attributes :d
node(:c) { |n| n[:d] }
但我收到了 {"c":null}
如何使用RABL渲染?
rha*_*iso 31
这适用于任意哈希值.
object false
@values.keys.each do |key|
  node(key){ @values[key] }
end
使用Rails 3.2.13和Ruby 2.0.0-p195为我工作
jbn*_*unn 22
目前RABL与哈希的表现并不太好.我能够通过将我的哈希值转换为OpenStruct格式(使用更多RABL友好的点符号)来解决这个问题.使用你的例子:
your_controller.rb
require 'ostruct'
@my_hash = OpenStruct.new
@my_hash.d = 'e'
your_view.rabl
object false
child @my_hash => :c do
    attributes :d
end
结果
{
  "c":{
    "d":"e"
  }
}
RABL处理对象但不需要特定的ORM.只是支持点表示法的对象.如果你想使用rabl,你拥有的就是哈希:
@user = { :name => "Bob", :age => 27, :year => 1976 }
那么你需要先将哈希值转换为支持点表示法的对象:
@user = OpenStruct.new({ :name => "Bob", :age => 27, :year => 1976 })
然后在RABL模板中将OpenStruct视为任何其他对象:
object @user
attributes :name, :age, :year
考虑一下,如果您在应用程序中执行的所有操作只是处理哈希并且没有涉及对象或数据库,那么使用其他更多自定义JSON构建器(如json_builder或jbuilder)可能会更好.
粘贴在RABL的github上的官方维基页面:https://github.com/nesquena/rabl/wiki/Rendering-hash-objects-in-rabl