Очень сложно что-то разобрать, конечно. А что должно находиться в ключе files, мой мозг, лично, за 2 минуты скомпилировать не смог.
Разбейте "рефакторинг", если это можно так назвать, на такие шаги:
1. Забейте на HTML партиал
2. Вместо того, что б собирать текстовый JSON вручную во вьюхе, соберите руби-хэш в контроллере и вызовите на нем
to_json
. Например:
def my_action
res = {
description: @homework.description,
...
html_id: "homework#{@homework.id}"
}
res[:tag] = @homework.subject_id if @homework.subject_id
end
3. Добейтесь, что б
res.to_json
выдавал необходимый результат.
4-а. Почитайте про
each_with_index
4-б. Почитайте про Rails Rendering Collections,
пункт 3.4.5
4. Допишите и добейтесь, что б работало:
res[:files] = render @homework.attachments
5. В идеале, засуньте это все в модель. Например, переопределите для Homework метод to_json. Отличие будет только в том, что render нужно будет вызывать как-то типа
ActionController::Base.new.render(...)