Javascript在application.js文件中加载,但在Rails 3.2中不起作用

时间:2013-03-28 03:16:06

标签: jquery ruby-on-rails-3

我讨厌甚至问这个,因为我确定这是明显的,但我花了几个小时寻找答案而找不到答案。

我有一个使用'slideup'功能的简单javascript(jquery)代码。我在我的表单上使用它部分显示或隐藏基于选择的字段。如果我将代码直接放入表单中,它就能完美运行。如果我将它放入assets / javascript文件夹,它将包含在application.js文件中,但不起作用。

为了进行测试,我还提出了一个javascript警报,只是为了查看它是否正在加载,它是,警报触发。我无法理解我的生活。

这是我的app / assets / javascript / form.js中的javascript:

$('#Postponement').change(function () {
    if ($("#NewWeddingDate").is(":hidden")) {
      $("#NewWeddingDate").show("slow");
    } else {
      $("#NewWeddingDate").slideUp();
    }
  })


$(function(){
  alert('got to application.js!');
})

这是相关的表单代码(我正在使用Formtastic):

<div id='Postponement' >

    <%= f.input :Postponement, :label => "Will the wedding be postponed?", :input_html => { :id => 'Postponement' }, :as => :select, :include_blank => false, :collection => ['Yes', 'No'], :selected => 'Yes' %> <br />

    </div>

    <div id = 'NewWeddingDate' >

    <%= f.input :NewWeddingDate, :label => "The new wedding date is:", :input_html => { :id => 'NewWeddingDate' }, :as => :date_select, :start_month => Time.now.month, :start_year => Time.now.year, :end_year => Time.now.year + 10, :order => [:month, :year] %><br />

    </div>

我的application.html.erb包含<%= javascript_include_tag "application" %>,如果我将javascript代码直接添加到_form.html.erb文件中,它可以正常工作。我绝对是这个东西的新手,所以我确信它是显而易见的。我可以将代码保留在_form.html.erb中,但我正在努力做正确的事情(Rails)。任何和所有的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试在加载文档后运行代码。现在,它可能在#Postponement存在之前立即执行,除非您将其放置在部分形式中。例如:

$(function() {
    $('#Postponement').change(function () {
        if ($("#NewWeddingDate").is(":hidden")) {
          $("#NewWeddingDate").show("slow");
        } else {
          $("#NewWeddingDate").slideUp();
        }
    })
});

将您的功能放在$()内,确保其运行after the DOM is fully ready