RuntimeEror при использовании файла актива .js.coffee - PullRequest
1 голос
/ 25 октября 2011

Я только начинаю использовать скрипты rails 3.1 и jQuery / coffee.У меня есть фрагмент кода js, который работает, когда он включен в тег на мой взгляд, но при включении в app / assets / javascripts / post.js.coffee он выдает следующую ошибку:

ExecJS ::RuntimeError в сообщениях # new

Отображение /home/chris/RailsDev/blog/app/views/layouts/application.html.erb где поднята строка # 10:

Зарезервированное слово "function" включенострока 7 (в /home/chris/RailsDev/blog/app/assets/javascripts/post.js.coffee)

Это работает:

приложение/views/posts/new.html.erb

<%= form_for [@user, @post] do |f| %>
      <div class="field">
        <%= f.label :title %><br />
        <%= f.text_field :title %>
      </div>
      <div class="field">
        <%= f.label :content %><br />
        <%= f.text_area :content %>
      </div>
      <div class="field">
        <label for="forward_date">Post in the future?</label>
        <%= check_box_tag 'forward date' %>
        <div id="post_date" style="display: none;">
          <%= f.label :post_date %>
          <%= f.datetime_select :post_date %>
        </div>
      </div>
      <div class="actions">
        <%= f.submit "Create" %>
      </div>
    <% end %>
    <script>
      $("#forward_date").change(function() {
        if($(this).is(":checked")) {
          $("#post_date").show("slow");
        } else {
          $("#post_date").hide("slow");
        }
      });
    </script>

Это вызывает ExecJS :: RuntimeError

Удалите тег из представления и поместите код в приложение /assets / javascripts / post.js.coffee

$("#forward_date").change(function() {
  if($(this).is(":checked")) {
    $("#post_date").show("slow");
  } else {
    $("#post_date").hide("slow");
  } 
});

Ответы [ 2 ]

2 голосов
/ 25 октября 2011

кофейный текст не кофейный текст

должно быть:

$("#forward_date").change ->
  if $(this).is(":checked")
    $("#post_date").show "slow"
  else
    $("#post_date").hide "slow"
2 голосов
/ 25 октября 2011

Это не то, как вы объявляете функцию в Coffeescript.Вместо ключевого слова function используйте ->:

$("#forward_date").change -> 
  if $(this).is ":checked"  
    $("#post_date").show "slow"
  else
    $("#post_date").hide "slow"
...