1
  1. 首先,每次修改 .coffee 文件后,是否应该运行“bundle exec rake:precompile”?我发现它通常不会自动生效。

  2. 我有一个表格,我想选中复选框以在网页上显示一些内容。

我在 中写了一个文件app\assets\javascripts\testbeds.js.coffee,内容如下:

alert "ddd"

$(".checkbox1").click ->
  alert "aaa"

$("#manually").click ->
  alert "aaa"

$("#manually").change ->
  alert "aaa"

$('input[type=checkbox]').on 'change', ->
  alert(0)

和一个视图文件app\views\testbeds\edit.html.erb::

<h1>Editing testbed</h1>

<%= render 'form' %>
<%= link_to 'Show', @testbed %> |
<%= link_to 'Back', testbeds_path %>

的内容app\views\testbeds\_form.html.erb只有一个复选框:

<%= form_for(@testbed) do |f| %>
  <% if @testbed.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@testbed.errors.count, "error") %> prohibited this testbed from being saved:</h2>

      <ul>
      <% @testbed.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :configuration_id %><br />
    <% selected = (@configuration.nil?) ? nil : @configuration.id %>
    <%= f.select :configuration_id, options_from_collection_for_select(@configurations, 'id', 'name', selected) %>
    <label class="checkbox1">
     <input id="manually" type="checkbox" name="manually" value="manually">
    </label>

      <label id="label"> Choose resources manually</label>
  </div>
  <div id="resources">
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

当我单击或选中复选框时,alerts 不起作用。但第一行的alert“ddd”显示正确。

application.js 中的编译内容如下所示。我不确定“(jQuery);” 属于上一个功能或者这个功能,附上就可以了。

  }

})( jQuery );
(function() {

  alert("ddd");

  $(".checkbox1").click(function() {
    return alert("aaa");
  });

  $("#manually").click(function() {
    return alert("aaa");
  });

  $("#manually").change(function() {
    return alert("aaa");
  });

  $('input[type=checkbox]').on('change', function() {
    return alert(0);
  });

}).call(this);
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.

有人可以告诉我原因并教我这是如何工作的吗?

非常感谢你。

4

2 回答 2

0

您可以使用on('change'). 这是普通 jQuery(非咖啡)中的 jsfiddle:http: //jsfiddle.net/CrQP6/

在咖啡中,它将是

$('input[type=checkbox]').on 'change', ->
  alert(0)
于 2013-08-16T17:15:07.657 回答
0
  1. 不,在rails开发环境中不需要手动重新编译coffeescript文件,一般

  2. 确保您已阅读资产管道文档。这可能是由于 app/assets/application.js 需要需要 testbeds javascript 文件造成的。

  3. 更改您的代码只是为了执行警报('test')以验证您的 javascript 是否正确加载到资产管道中 - 如果可行,那只是您执行 jquery 绑定方式的问题

编辑:可能出错的是,一旦您在本地运行 rake assets:precompile ,它将完全从公共/资产中提供资产。如果要返回按需编译行为(这是您想要的),则需要删除该目录

于 2013-08-16T17:15:33.280 回答