7
votes

Tirscript JQuery Chemin ne fonctionne pas / rubis sur rails

J'ai une fonction jQuery appelée après un doubleclick sur un élément de la liste.

app / actif / javascripts / carrelage / tuile.js strong> p> xxx pré>

Suivant à l'application de nouveaux formats audit article mon objectif principal est de Faites une entrée de base de données à partir de mon comme contrôleur code>. Dans ce railsCast L'index code> code> Action de leur Commentaires code> Controller est appelé avec cette ligne simple. P>

class LikesController < ApplicationController
  protect_from_forgery

  def index
    Like.create(:user_id => current_user.id, :item_id => params[:id])
  end
end


2 commentaires

Je ne sais pas ce que vous demandez ... Voulez-vous utiliser des appels AJAX afin d'envoyer des informations \ Recevoir du serveur?


Je ne pourrai pas essayer toutes vos grandes suggestions jusqu'au jeudi ... Merci déjà pour l'aide !!


5 Réponses :


2
votes

Vous pouvez définir une action dans le contrôleur comme celui-ci: xxx pré>

et vous pouvez appeler action comme / goûts / créelike code>.
Dans le dossier path_to_app / app / vues / goûts code> Créer un fichier créatifike.html.erb code> - il y a un CreatELLIKIKIKIKE P >

Les fichiers JavaScript doivent être dans le dossier / path_to_app / public / javascripts code>
Et meilleure façon d'inclure le fichier JavaScript est un Javascript_include_tag comme: p >

<%= javascript_include_tag "tile/tile.js" %>  


0 commentaires

3
votes

Je pense que le problème d'exécution peut être résolu en déplaçant index.js.erb de

app / actif / javascripts / goûts / index.js.erb

à

app / vues / goûts

C'est ici que les rails recherchent des modèles de rendu (votre script ne doit pas être servi par le pipeline d'actif). Les rails s'attaquent à ceci via Convention - votre application achemine automatiquement / aime à l'action de l'index.

Si vous souhaitez un itinéraire plus informatif, utilisez le Guide de routage Rails pour générer un nouvel itinéraire et faire la correspondre à l'action Create_likes dans le contrôleur de goûts. Puis, $ .Getscript ("/ create_likes.js") saura où regarder


1 commentaires

Merci Allot, cela a travaillé pour moi! :) Après avoir changé le chemin du fichier JS, je devais ajouter ressources: aime à mes itinéraires afin qu'il correspond à get / gove avec l'index action.



2
votes

Le comportement que vous voulez est différent de ce que ce rails spécifique s'adresse. Il est spécifiquement ciblé sur la récupération de nouveaux commentaires tels qu'ils sont créés, sans rafraîchir la page. C'est pourquoi vous rencontrez des problèmes suivant ce guide.

Tout d'abord, vous devez vous assurer que vous avez un ressources: aime dans votre config / routes.rb. À partir de votre extrait de code, on dirait que vous associez un film comme avec un film, assurez-vous de rendre l'itinéraire imbriquée dans votre Ressources: Films Appel. À la fin, vos itinéraires doivent ressembler à quelque chose comme ceci: xxx

pour la pièce du contrôleur, vous devrez ajouter une action "Créer" à votre contrôleur. En supposant que votre modèle de film has_many: aime Il s'agit d'une version simple de votre action à ressembler: xxx

Vous devrez également changer votre code javascript pour faire un message au lieu d'une demande d'obtention. C'est parce que la méthode HTTP est la différence sur les rails entre une demande de création et une demande d'index, car ils utilisent tous deux le même chemin d'URL (par exemple. /Comments.js). Vous aurez également besoin d'avoir l'URL refléter que c'est une ressource imbriquée dans un film. Voici une version modifiée de votre code JS avec ce changement: xxx

en ce qui concerne votre fichier .js.erb, comme indiqué par d'autres, il doit être placé dans votre App / Vues Dossier. Cependant, en raison de votre JS régulier qui manipule la logique, vous n'avez pas besoin de tout avoir tout.

Ceci n'est qu'une stratégie, mais il existe de nombreuses autres façons de gérer l'interaction JS avec des rails. Si vous souhaitez un exemple d'utilisation d'un fichier js.erb (js.coffee dans ce cas) Voir le fichier, vous pouvez consulter ce implémentation . Dans ce cas, tout ce qui gère l'événement de clic est un lien_to avec la télécommande: option vraie qui vous déléguette l'adaptateur JQuery-UJS.

espère que cela aide!


0 commentaires

2
votes

Ceci pourrait ne pas être proche de votre réponse, mais j'utilise $. Gauxcript () Pour charger ces fichiers JS / CSS que j'ai besoin une fois que ma page a rendu, qui Au courant, améliore les performances et réduit la charge de la page. C'est le code que j'ai utilisé dans mon erb files.my shop_for_free_module.js réside dans app / public / javascripts < Pré> xxx

... espérons que cela aide.


0 commentaires

2
votes

Essayez ceci sur

Question: Mon premier problème avec la compréhension du code d'exemple de Railscasts est la manière dont ils définissent l'action. Si je voulais appeler l'action CreatELIKIKIKIKIKIKIKIKIKIKIKIKE de My Likes_Controller, comment l'appellerais-je? P>

Réponse: P>

$(document).ready(function() {

$('#list > li').dblclick(function(){
  // styling
  $(this).toggleClass('liked');

  // pass ID to controller
  var item_id = $(this).attr("data-id");
  $.getScript("/create_like.js?item_id=" + item_id);
});
});


1 commentaires

@THECHAMP a mis à jour ma réponse, corrigé un bogue de code dans la méthode des obtint appelant, au lieu de likes.js Create_Like.js doit être appelé.