RJS не обновляет элементы HTML таблицы - PullRequest
0 голосов
/ 04 августа 2009

У меня есть функция link_to_remote, которая обновляет столбцы в таблице. Однако он не обновляет ячейку или ее свойства должным образом.

Например:

Вот элемент, который я обновляю:

 <div id= "calendar_div_<%= i%>_<%=j%>" style = "display :inline;"><td class="checkedout">X</td></div>

Используя этот вызов:

  <%= link_to_remote 'Current Week', :url => { :action => :current_week } %>

Звонки:

render :update do |page|

                    page["Week_div"].replace_html session[:next_week].to_s

                    for i in 0..23 do
                            for j in 0..6 do
                                    page["calendar_div_"+i.to_s+"_"+j.to_s].replace_html '<td class="available">Available</td>'
                            end
                    end

Однако он никогда не обновляет тег <td> должным образом. Элемент никогда не обновляет текст должным образом и не кодирует цвет элемента (td.available имеет зеленый цвет фона).

Ответы [ 2 ]

1 голос
/ 05 августа 2009

Чтобы сделать это, Райанб был в основном прав. Вы не можете сделать это, используя <div><td> порядок тегов. Скорее вам нужно использовать идентификатор для тега <td>.

Тем не менее, это ЕЩЕ НЕ корректно обновляло ячейку для замены цвета; предыдущий фон все еще появлялся, с новым перекрывающим область, где они перекрывались. Чтобы правильно заменить весь элемент, используйте следующий синтаксис:

 $("calendar_div_0_1").replace("<td class=\"available\">Available</td>");

Вместо использования обновления используйте replace .

0 голосов
/ 04 августа 2009

Убедитесь, что Prototype включен в ваше приложение.

<%= javascript_include_tag :defaults %>

Кроме того, если у вас нет действительного HTML, иногда прототипу будет трудно пройти через DOM. Попробуйте проверить страницу , исправив все теги, у которых нет закрывающего тега.

Кроме того, вы можете попытаться изолировать проблему, экспериментируя. Попробуйте это например.

<div id="calendar_div_0_1"><td class="checkedout">X</td></div>
<%= link_to_function "update", "$('calendar_div_0_1').update('<td class=\"available\">Available</td>');" %>

Это работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...