0

私は単にJqueryを私のrailsアプリケーションで動作させようとしています。

new.html.erbファイルにJQueryを配置したいのですが、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がstat-form-innerの要素には、そのクラスが追加されていません。

私のapplication.jsファイルにはこれが含まれています:

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

私も追加しました

<%= javascript_include_tag 'application' %>   

終了ボディタグのすぐ上。

他に何が欠けていますか?

ありがとう!

4

3 に答える 3

2
  1. JQueryが正しくロードされていることを確認してください。これを行うには、$('#stat-form-inner')。addClass('test-class')を削除/コメントし、アプリをFF / chromeで開き、Firebugコンソールで$またはjQueryと入力します。function()を出力する場合、jQueryは正しくロードされます。エラー参照エラーをスローする場合、jQueryが定義されていない場合、JQueryフレームワークはロードされません。

  2. JQueryが正しく読み込まれている場合は、次の提案を試してください

    このステートメント<%= javascript_include_tag'application'%>をheadタグ内、またはビュー/レイアウトファイルの先頭に配置します。

    以下のコードセグメントを試して、クラスを要素に追加します。できればページの最後に追加します(HTMLタグを閉じた後でもこれを配置できます)。

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

お役に立てれば

于 2013-02-18T10:31:33.013 に答える
1

スクリプトをフォルダapp/assets/javascriptに入れます。必ず$("...")、ではなくを使用してください$.()

Railsへようこそ!

于 2013-02-18T05:25:38.893 に答える
0

終了bodyタグの上にjavascript_include_tagを追加しています。つまり、これは、ページがjqueryをロードする前にスクリプトが実行されていることを意味します。javascript_include_tag呼び出しをheadタグに移動すると、機能するはずです。

于 2013-02-18T05:24:49.163 に答える