Обновление html-элемента путем частичного вызова из файла javascript - PullRequest
1 голос
/ 18 декабря 2011

У меня есть элемент контейнера td, который я успешно заполняю другими элементами с использованием частичного HTML, это происходит при загрузке страницы.

Часть выполняет над объектом task , который он получает в качестве параметра, и решает, какие элементы добавить.

После выполнения определенного действия объект task обновляется, и я хочу обновить контейнер, снова запустив партиал.

Я вызываю эту часть из моего create.js.haml с обновленной задачей , эта часть запускает и создает правильный обновленный HTML (я вижу это в ответе Firebug).

Но текущая страница не обновляется . Что мне здесь не хватает?

Вот мои файлы:

html.haml, который содержит контейнер td:

%td#task-categories{ :class => "#{dom_id(task)}_categories"}
  = render 'task_categories_mini_bar', :task => task

Частичное html.haml:

- _MAX_DISPLAYED_CAT = 3
- cat_index = 0
- task.categories.each do |category|
  - if (cat_index == _MAX_DISPLAYED_CAT)
    %td{:style => "padding-left:1px; padding-right:5px"} ...
    - break
  - cat_index += 1
  %td{ :class => "task-category-color_#{dom_id(category)}",
  :style => "width:60px; background:#{category.color}; border:solid 1pt lightblue; border-radius:3pt; text-align:center; "}
    = truncate(category.name, :length => 10)

вместе они создают этот HTML-код:

<td id="task-categories" class="task_3_categories"> </td>
<td class="task-category-color_category_1" style="width:60px; background:#b8d7ff; border:solid 1pt lightblue; border-radius:3pt; text-align:center; "> cat1 </td>
<td class="task-category-color_category_2" style="width:60px; background:#ff8fcb; border:solid 1pt lightblue; border-radius:3pt; text-align:center; "> cat2 </td>

Здесь есть еще одна проблема - две добавленные категории tds добавляются ниже первой емкости td. Как я могу добавить их к нему, а не после него?

Теперь вот create.js.haml, который снова вызывает частичное:

$('td.#{dom_id(@task)}_categories').html(#{escape_javascript(render(:partial => 'tasks/task_categories_mini_bar', :locals => {:task => @task}))})

Опять же, HTML-код ответа отображает новый HTML-код, но страница не обновляется.

Я использую рельсы 3.0.10 Спасибо, Eyal.

1 Ответ

0 голосов
/ 06 января 2012

Хорошо, тогда я пропустил "" вызов частичного в моем ajax create.js.haml

$('td.#{dom_id(@task)}_categories').html("#{escape_javascript(render(:partial => 'tasks/task_categories_mini_bar', :locals => {:task => @task}))}")

Вот и все.

...