2016-04-27 3 views
0

мне нужно сделать JSon структуру, как это, но с более чем 1 пунктов:Структура 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, 

Как Я делаю эту структуру?

ответ

4

Есть две вещи, которые я вижу неправильно. Во-первых, вы используете оператор «=» для установки значения Ruby Hash. Это неверно, поскольку хеши 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.

+0

кажется законным ... – zgood

Смежные вопросы