2013-02-18 64 views
0

我只是想让Jquery和我的rails应用程序一起工作。在Rails 3.2中使用JQuery遇到的麻烦

我想打一些JQuery的我new.html.erb文件,我得到下面的错误在Chrome的控制台:

Uncaught SyntaxError: Unexpected token ( 

这里是我的new.html.erb:

<% provide(:title, "New Stat") %> 
<% provide(:heading, "Welcome, #{ current_user.email }!") %> 

<div id="stats-page-container"> 
    <div id="stat-form" > 
    <div id="stat-form-inner"> 

    <% render 'layouts/init_stats_form' %> 
    <% render 'layouts/stat_input_form' %> 

    <script> 
     $.('#stat-form-inner').addClass('test-class'); 
    </script> 

    </div> 
</div> 
    <%= render 'layouts/progress' %> 
</div> 

误差与jQuery代码行:

$.('#stat-form-inner').addClass('test-class'); 

这是我的application.html.erb文件:

<html> 
<head> 
    <title><%= full_title(yield(:title)) %></title>  
    <h1> <%= yield(:heading) %> </h1> 
    <%= stylesheet_link_tag "application", :media => "all" %> 
    <%= csrf_meta_tags %> 
</head> 
<body> 
    <% flash.each do |key, value| %> 
    <%= content_tag(:div, value, class: "alert alert-#{key}")%> 
    <% end %> 

    <%= render 'layouts/header' %> 

    <% if user_signed_in? %> 
    <%= render 'layouts/subheader' %> 
    <% end %> 

    <%= yield %> 
    <%= debug(params) if Rails.env.development? %> 

    <%= javascript_include_tag 'application' %> 
</body> 
</html> 

并使用该ID统计外形内的元素没有这个类添加到它。

我的application.js文件中有这样的吧:

// = require jquery 
// = require jquery_ujs 
// = require_tree . 

我还添加了

<%= javascript_include_tag 'application' %> 

直接结束body标签上面。

我还缺少什么?

谢谢!

+1

我不认为'。' $之后需要运算符。删除它并检查 – 2013-02-18 04:59:09

+0

这给了我这个: 未捕获ReferenceError:$未定义新:63 (匿名函数) – 2013-02-18 05:00:03

回答

2
  1. 确保JQuery已正确加载。为此,删除/注释$('#stat-form-inner').addClass('test-class')并在FF/chrome中打开应用程序,并在Firebug控制台中键入$或jQuery。如果它打印函数(),然后jQuery被正确加载。如果它引发错误引用错误,jQuery没有定义,那么JQuery框架没有加载。

  2. 如果jQuery是正确加载,请尝试以下建议

    将这一说法<%= javascript_include_tag“应用程序”%> head标签内或者在您的视图/布局文件的顶部。

    尝试下面的代码段到类添加到元素,最好是在页面的末尾(其好把这个连结束HTML标记之后)

    <script type="text/javascript"> 
        $(document).ready(function() { 
        $('#stat-form-inner').addClass('test-class'); 
        }); 
    </script> 
    

希望这有助于

+0

是的,这是做到了。 我现在感觉哑巴哈哈! 我将脚本放在元素内而不是放在模板的末尾......当您的咖啡因过少或睡眠不足时,会发生以下情况:D感谢您的帮助! – 2013-02-18 15:28:08

0

您要添加的结束身体标记上方javascript_include_tag。所以这意味着你的脚本在页面加载jquery之前被执行。将javascript_include_tag调用移动到head标签,它应该可以工作。

+0

我试过了,它没有工作。 – 2013-02-18 05:49:10

+0

,这并没有帮助。你能包括你的模板和布局的要点吗?和任何错误。 – jvnill 2013-02-18 05:55:58

+0

好的。我添加了更多的文件包含。这是我的应用程序现在唯一的错误。 – 2013-02-18 15:21:35

1

将脚本放在文件夹app/assets/javascript中,确保使用$("...")而不是$.()

欢迎来到Rails!

+0

我将这个脚本直接添加到new.html.erb页面,以便以后我可以使用AJAX。 – 2013-02-18 05:51:10

+0

无论如何,您仍然需要修复语法错误。 – sevenseacat 2013-02-18 10:49:35