我有一个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
被定义为背景颜色为绿色)。
答案 0 :(得分:1)
为了做到这一点,ryanb大多是正确的。您无法使用<div><td>
代码订单执行此操作。相反,您需要使用<td>
标记的ID。
但是,这仍然无法正确更新单元格以覆盖颜色;之前的背景仍然出现,新的覆盖了它们重叠的区域。要正确替换整个元素,请使用以下语法:
$("calendar_div_0_1").replace("<td class=\"available\">Available</td>");
使用替换。
,而不是使用更新答案 1 :(得分:0)
确保您的应用程序中包含Prototype。
<%= javascript_include_tag :defaults %>
此外,如果您没有有效的HTML,有时原型将无法遍历DOM。试试validating the page,专门修复任何没有结束标签的标签。
除此之外,您可以尝试通过实验来隔离问题。试试这个例子。
<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>');" %>
这适合我。