/ / Problème avec JQuery dans Rails 3.2 - jquery, ruby-on-rails, ruby-on-rails-3.2

Problème avec JQuery dans Rails 3.2 - jquery, ruby-on-rails, ruby-on-rails-3.2

J'essaye simplement de faire fonctionner Jquery avec mon application rails.

Je "voudrais placer du JQuery dans mon fichier new.html.erb et j'obtiens l'erreur suivante dans la console de chrome":

 Uncaught SyntaxError: Unexpected token (

Voici mon nouveau.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>

L'erreur est dans la ligne avec le code JQuery:

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

Voici mon fichier 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>

Et l'élément avec cet id stat-form-inner n'a pas cette classe ajoutée.

mon fichier application.js contient ceci:

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

J'ai aussi ajouté

<%= javascript_include_tag "application" %>

directement au-dessus de la balise body de fin.

Que manque-t-il d'autre?

Merci!

Réponses:

2 pour la réponse № 1
  1. Assurez-vous que JQuery est correctement chargé.Pour ce faire, supprimez / commentez $ ("# stat-form-inner"). AddClass ("test-class") et ouvrez l'application dans FF / chrome et tapez $ ou jQuery dans la console Firebug. S'il imprime function (), alors jQuery est chargé correctement. Si cela génère une erreur Erreur de référence, jQuery n'est pas défini, alors le framework JQuery n'est pas chargé.

  2. Si JQuery est chargé correctement, essayez les suggestions suivantes

    Placez cette déclaration <% = javascript_include_tag "application"%> à l'intérieur de la balise head ou en haut de votre fichier de vue / mise en page.

    Essayez le segment de code ci-dessous pour ajouter la classe à l'élément, de préférence à la fin de la page (il est normal de le mettre même après la balise HTML de fermeture)

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

J'espère que cela t'aides


1 pour la réponse № 2

Mettez vos scripts dans le dossier app/assets/javascript, en veillant à utiliser $("..."), ne pas $.().

Bienvenue sur Rails!


0 pour la réponse № 3

Vous ajoutez le javascript_include_tag ci-dessusla balise de fin de corps. Cela signifie donc que votre script est en cours d'exécution avant que la page ne charge jquery. déplacez l'appel javascript_include_tag vers la balise head et cela devrait fonctionner.