我刚刚开始使用rails 3.1和jQuery / coffee脚本。我有一段js代码,当它包含在我的视图中的标记中时,但当包含在app / assets / javascripts / post.js.coffee中时,它会引发以下错误:
帖子#new 中的ExecJS :: RuntimeError
显示 /home/chris/RailsDev/blog/app/views/layouts/application.html.erb在哪里 第10行提出:
第7行的保留字“功能”(in /home/chris/RailsDev/blog/app/assets/javascripts/post.js.coffee)
这有效:
应用程序/视图/帖/ 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
从视图中删除标记并将代码放在app / assets / javascripts / post.js.coffee中
$("#forward_date").change(function() {
if($(this).is(":checked")) {
$("#post_date").show("slow");
} else {
$("#post_date").hide("slow");
}
});
答案 0 :(得分:2)
这不是你在Coffeescript中声明一个函数的方式。而不是关键字function
使用->
:
$("#forward_date").change ->
if $(this).is ":checked"
$("#post_date").show "slow"
else
$("#post_date").hide "slow"
答案 1 :(得分:2)
coffeescript不是coffeescript
应该是:
$("#forward_date").change ->
if $(this).is(":checked")
$("#post_date").show "slow"
else
$("#post_date").hide "slow"