2012-01-16 3 views
1

у меня есть что-то вроде этого в моем проекте зрения # шоу:Как я могу отображать некоторые js и сохранять их ненавязчивыми одновременно?

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

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

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

И я следующий в моем projects.js.coffee:

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

Дело в том, я хотел бы создать экземпляр datepicker с некоторой релевантной информацией (такой как промежуток проекта в месяцах, ограничивает его до начала и конца проекта). Есть ли способ смешать некоторые рубины или фактические данные проекта внутри coffeescript?

ответ

3

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

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

Таким образом, в представлениях, я могу добавить менее навязчивой 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 %> 
+0

это не будет интерпретироваться как CoffeeScript. – Geo

+0

Использует что-то вроде https://github.com/markbates/coffeebeans и работает над ним с помощью 'coffee_script_tag'. – Geo

+0

Извините за смесь скриптов, пожалуйста, рассмотрите выше, чтобы быть псевдокодом. Я хотел передать намерение, а не код. – meagar