jQuery InsertAfter在Rails窗体上复制

时间:2012-03-17 20:52:34

标签: jquery ruby-on-rails

RailsTutorial Exercise 10.5.7要求我为微博表格插入一个字符计数器。我正在使用this plugin来完成任务。

一切正常,但字符数div被插入两次,如下面的屏幕截图所示。

Two character count divs

我怀疑这种情况正在发生,因为我正在使用form_for标记,这需要一个块。这是页面代码:

<%= javascript_include_tag "character-counter", "character-counter-options" %>
<%= form_for(@micropost) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>
  <div class="field">
    <%= f.text_area :content, placeholder: "Compose new micropost...",
                              id: "new-micropost" %>
  </div>
  <%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>

我可以根据需要发布javascript,但就像我说的那样,除了重复之外,一切正常。我没有更改任何插件代码,只是按照插件源中包含的示例选择我的选项。所有这些都可以在第一段的链接中找到。


更新:这是我正在使用的javascript。插件代码很长,所以我选择将它放在paste中。 InsertAfter出现在粘贴的第38行。我的选择也是过去的,但由于它们很短,你也可以在这里阅读它们。

var info;
$(document).ready(function(){
    var options = {
        'maxCharacterSize': -2,
        'warningStyle' : 'warning',
        'warningNumber': 40,
        'displayFormat' : '#input/140'
    };
    $('#new-micropost').textareaCount(options);
});

2 个答案:

答案 0 :(得分:0)

对于我的一个应用程序,我正在使用jquery.char_limit.js。 它对我来说很好。

答案 1 :(得分:0)

事实证明,由于我在资产管道中包含了javascript,因此它被加载了两次。它由资产管道加载一次,然后再以我的形式部分加载(参见我的OP中模板代码的第一行)。

请参阅:$(function) gets called twice in Rails 3.2.1 App

我并不是真的需要每个页面上的代码,只是在那个部分,所以我会将文件移出资产管道。 :/