Javascript 如何在视图中混合使用JS和Ruby代码以供以后使用JS?

Javascript 如何在视图中混合使用JS和Ruby代码以供以后使用JS?,javascript,ruby-on-rails,ruby,coffeescript,Javascript,Ruby On Rails,Ruby,Coffeescript,我正在使用jQueryUIDatePicker小部件显示日历。日历中的每一天都由属于目标模型的结果对象集合表示。 如果一天的所有结果都成功,我将在日历单元格上设置一个类,使其变为绿色。如果他们中至少有一个失败了,我就大发雷霆。如果没有结果,我就把它变成灰色。现在,我做了这样的事情: <%= start_day .. end_day do |day| %> <div class="hidethis" id="<%= [day.year,day.month,day.ye

我正在使用jQueryUIDatePicker小部件显示日历。日历中的每一天都由属于目标模型的结果对象集合表示。 如果一天的所有结果都成功,我将在日历单元格上设置一个类,使其变为绿色。如果他们中至少有一个失败了,我就大发雷霆。如果没有结果,我就把它变成灰色。现在,我做了这样的事情:

<%= 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 %>
<script type="text/javascript">
    window.app = window.app || { };
    window.app.objective_data = <%= @raw_objective_data.to_json.html_safe %>;
</script>


我将数据存储在隐藏的div中,稍后,当我初始化日历时,在beforeShowDay中,我将通过div ID查找与我相关的div ID,并设置负责为单元格着色的类。是否有其他方法可以做到这一点,或者这是其他人在实践中使用的方法?

我不会使用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');

var值=$('div').attr('data-value');

使用HTML存储数据似乎有点迂回。为什么不将数据存储为JavaScript数据?大概是这样的:

<%= 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 %>
<script type="text/javascript">
    window.app = window.app || { };
    window.app.objective_data = <%= @raw_objective_data.to_json.html_safe %>;
</script>

window.app=window.app | |{};
window.app.objective_data=;
然后在Ruby中设置原始数据,将其保留在
@raw\u objective\u data
中,然后在初始化过程中将其加载到客户端模型中。或者,您可以通过一个简单的AJAX调用将数据直接加载到(Java | Coffee)脚本中

您还需要避免
'
@raw\u objective\u数据中的类似内容。要使用json
,您可以了解这一点