我怎样才能渲染一些js并同时保持不引人注目?

时间:2012-01-16 19:39:28

标签: ruby-on-rails coffeescript unobtrusive-javascript

我的Project#show view中有这样的东西:

...
<p>
  <b>Start date:</b>
  <%= @project.start_date %>
</p>

<p>
  <b>End date:</b>
  <%= @project.end_date %>
</p>

<div id="calendar_view">
</div>

我的项目中有以下内容:js.coffee:

$ ->
    $("#calendar_view").datepicker({
        inline: true
    })

问题是,我想用一些相关信息(例如几个月的项目范围,将其限制在项目的开头和结尾)来实例化datepicker。有没有办法在coffeescript中混合一些ruby或实际项目的数据?

1 个答案:

答案 0 :(得分:3)

对于我的项目,我通常在文档的末尾添加一个额外的yield块,就在关闭正文标记之前。

<body>
...
<%= yield :additional_javascript %>
</body>

这样,在视图中,我可以通过content_for :additional_javascript块将 less 突出的JavaScript附加到文档的末尾:

<p>
  <b>Start date:</b>
  <%= @project.start_date %>
</p>

<p>
  <b>End date:</b>
  <%= @project.end_date %>
</p>

<div id="calendar_view">
</div>

<% content_for :additional_javascript do %>
  $(function () {
    $("#calendar_view").datepicker({
      some_property: <%= @project.some_property %>,
      inline: true
    })
  });
<% end %>