2016-11-22 1 views
0

На данный момент, у меня есть это в моей форме:Rails 4: Создание JSON-массив в массив внутри ввода

<%= f.input :document, collection: @documents, wrapper: false, label: false, input_html: {class: 'fleft mleft5'} %> 

который будет производство в JSon массива:

[{ 
    "document":"126" 
}] 

Мой контроллер под create метод:

document: params[:ng_geofence][:document] 

My Mo дель

def as_hash(format=:google) 
    { 
    document: document 
    } 
end 

%w[document].each do |key| 
    define_method(key) do 
    value && JSON.parse(value)[key] 
    end 
end 

мой вопрос заключается в том, чтобы получить выход на что-то вроде этого:

[{ 
    "document": 
    { 
    "id":"126" 
    } 
}] 

---- ---- Обновлено

Если я изменил мою форму :

<%= select_tag "ng_geofence[driver_notification][document][id]", options_from_collection_for_select(@documents, "id", "name"), include_blank: true %> 

Я получаю эту ошибку: 757: unexpected token at '{"document"=>{"id"=>"126"}}'

Вероятно, из-за "=>" вместо ":"

+0

ли 'document' модель? потому что, если да, то я думаю, что у меня есть более простое решение. – Finks

+0

'{" document ":" 126 "}' not array, '[..]' здесь array, '{..}' whats json object. –

+0

@ Не работает. его attr – AmirolAhmad

ответ

0

решаемые мою собственную проблему. Вот что я сделал:

My Controller при создании метода:

document: { 
    id: params[:ng_geofence][:document] 
} 

Моя модель

def as_hash(format=:google) 
{ 
    document: { id: document } 
} 
Смежные вопросы