我需要像这样做一个json结构,但是有多个项目:
charge = {
items: [{
name: "Product A",
value: 1000,
amount: 2
}]
}
我的@items
是@items.pluck(:name, :price)
我试图像这样创建我的json:
charge = {
items: [{
@items.each do |item|
'name:' = item.name,
'value:' = item.price,
'amount:' = 2
end
}]
}
并返回此错误:
SyntaxError in CoursesController#qualquer
syntax error, unexpected '=', expecting keyword_end
'name:' = item.name,
我如何做这个结构?
答案 0 :(得分:4)
有两件事我看错了。首先,您正在使用" ="运算符以设置Ruby哈希值。这是不正确的,因为Ruby哈希使用符号或字符串。所以你的哈希值需要如下所示:
{ "may_hash_key" => my.has_value }
或
{ my_hash_key: my.hash_value }
或
{ :may_hash_key => my.has_value }
选择。
此外,如果您从控制器操作渲染JSON,您可以执行以下操作:
def index
# presumably some setup code
charge = {
items: @items.map do |item| {
name: item.name,
value: item.price,
amount: 2
} end
}
render json: charge
end
如果你没有从你的控制器动作渲染JSON,你可以做的是设置@charge并在视图中作为Ruby哈希与它交互。