как добавить атрибут источника данных для x-editable в рельсах

Как в rails вы предоставляете динамический хэш атрибуту исходных данных, который принимает x-editable?

  <a href="#" data-xeditable="true" data-type="select" data-pk="<%= g.id %>" data-model="graded_item" data-name="teacher_grade_id" data-url="<%= graded_item_url(g) %>" data-source="<%= g.gradescale.grade_scale_items.map{ |x| "{x.id, x.grade}" } %>" data-title="Edit Grade">

      <%= g.teacher_grade.try(:grade) %> - <%= g.teacher_grade.try(:name) %>
  </a>

В документах нужен хэш вроде { value: id, text: name }, но я не могу получить хэш, который не приводит к красному неактивному меню выбора (x-editable не нравится источник).

У кого-нибудь есть пример динамического источника данных для x-editable в рельсах?

По документам

Если массив - он должен быть в формате: [{value: 1, text: "text1"}, {value: 2, text: "text2"}, ...]

Для совместимости также поддерживается формат объекта: {"1": "text1", "2": "text2" ...}, но он не гарантирует порядок элементов.

Обновить

Это создало переменную экземпляра, которая представляет собой массив хэшей в точном формате, который, как говорят документы, необходим для источника данных массива. Но это также приводит к ошибке пустого выбора в редактируемом всплывающем окне.

  @grade_scale_items = []
  @course.gradescale.grade_scale_items.each do |x| 
      @grade_scale_items << {value: x.id, text: "#{x.grade} - #{x.name}"}
  end

person hellion    schedule 30.05.2014    source источник


Ответы (1)


Довольно простое решение ... после того, как немного покопался. Документы не очень полезны в этом, а в примерах рельсов используются только текстовые поля (без меню выбора). Преобразуйте массив хэшей в json... вот так.

  @grade_scale_items = []
  @course.gradescale.grade_scale_items.each do |x| 
     @grade_scale_items << {value: x.id, text: "#{x.grade} - #{x.name}"}
  end

  view: data-source="<%= @grade_scale_items.to_json %>"

Это помещает его в формат, который x-editable устраивает в качестве источника данных.

person hellion    schedule 30.05.2014