Проблема:
Я пытаюсь преобразовать объект JSON в HTML-форму или сгенерировать форму из объекта JSON. Я использую Ruby On Rails. *** Я не хочу использовать библиотеку для этого. Мне нужно специальное решение
Справочная информация:
У нас есть внешнее приложение, которое преобразует HTML-форму в JSON для сохранения в базе данных NOSQL, чтобы она сохраняла свою структуру. Теперь наш пользователь хотел бы иметь возможность редактировать эти данные как из внешнего приложения, так и из нашего проекта RoR.
Некоторый код:
У меня есть только c & p хэш в виде строкив мой контроллер. Я удалил некоторые значения, так что это часть структуры JSON
@result = {
"geoScope": {
"GeoScope": "Virtual",
"Neighborhoods": "Geo Neig",
"ServiceAreaName": "Geo Location",
"State": "Geo STate",
"Country": "Geo Country",
"Region": "Geo Region",
"City": "Geo City",
"County": "Geo County"
},
"programs": [
{
"S_Addiction": false,
"S_Identification": true,
"PopulationDescription": [
{
"xpath": "n/a",
"text": "Program One",
"domain": "n/a"
}
], ... and it continues with more arrays of hashes...
Моя попытка:
У меня нет проблем с простым отображением этих данных, но созданиеформы это боль. То, что я делаю, разбивает хеш на его части (он состоит из 4 форм) и пытается создать ввод из ключа / значения, и в зависимости от типа значения (строка, массив или объект) заполняет вводстоимость. (label = Key, Input.value = Value)
#controller
@result.each do |k,v|
case k.to_s
when 'geoScope'
@geoValue = v
# => { "GeoScope": "Virtual", "Neighborhoods": "Geo Neig" ...}
end
end
#view
<%= @geoValue.each do |k,v| %>
<script type="text/javascript">
newInput = document.createElement("input");
newInput.value = <% k %> #=> undefined.value = [object HTMLInputElement]
document.body.appendChild(newInput)
</script>
<% end %>
"<% = / <% k%>" не будет работать внутри скрипта. Если я смогу это сделать, я смогу решить это. Я бы предпочел разработать решение самостоятельно, потому что некоторые значения представляют собой хэш, который содержит 3 значения, а иногда это значение является просто строкой.
Как всегда, спасибо сообществу StackOverflow.