Как я могу рендерить некоторые js и сохранять их ненавязчивыми одновременно? - PullRequest
1 голос
/ 16 января 2012

У меня есть что-то подобное в моем 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?

1 Ответ

3 голосов
/ 16 января 2012

Для моих проектов я обычно добавляю дополнительный блок yield в конец наших документов, прямо перед закрывающим тегом тела.

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

Таким образом, в представлениях я могу добавить less навязчивый JavaScript к концу документа с помощью блока content_for :additional_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 %>
...