我正在使用jquery UI DatePicker小部件来显示日历。日历中的每一天都由Result对象的集合表示,它们属于Objective模型。 如果一天的所有结果都是成功的,我会在日历单元格上设置一个类,使其变为绿色。如果其中至少有一个失败了,我就把它弄成红色。如果没有结果,我会把它变成灰色。现在,我做这样的事情:
<%= start_day .. end_day do |day| %>
<div class="hidethis" id="<%= [day.year,day.month,day.year].join(",") %>" value="<%= objective.result_status_for_day(day)%>"/>
<% end %>
我将数据存储在隐藏的div中,之后,当我正在初始化日历时,在beforeShowDay中,我正在通过div id找到与我相关的那个,并且我设置了负责着色的类细胞。有没有其他方法可以做到这一点,或者这是其他人在实践中使用的东西?
答案 0 :(得分:2)
使用HTML进行数据存储似乎有点过分了。为什么不将数据存储为JavaScript数据?像这样:
<script type="text/javascript">
window.app = window.app || { };
window.app.objective_data = <%= @raw_objective_data.to_json.html_safe %>;
</script>
然后在Ruby中设置原始数据,将其保留在@raw_objective_data
中,然后在初始化过程中将其加载到客户端模型中。或者您可以通过简单的AJAX调用将数据直接加载到(Java | Coffee)脚本中。
您还希望在'</script>'
中避免@raw_objective_data.to_json
和类似的事情,您可以了解over here。
答案 1 :(得分:1)
我不会使用id和value属性。我不认为div标签甚至支持value属性。相反,我会使用数据属性,它允许您编写有效的HTML标记,同时在页面中嵌入数据。
<%= start_day .. end_day do |day| %>
<div class="hidethis" data-date="<%= [day.year,day.month,day.year].join(",") %>" data-value="<%= objective.result_status_for_day(day)%>"></div>
<% end %>
var value = $('div').attr('data-value');