7
votes

Comment passer des données à une partielle?

k gars, j'ai donc créé ce script de vote haut / bas (comme celui-ci ici sur Stackoverflow), et j'essaie d'ajouter un peu d'ajax à cela, de sorte que la page ne se recharge pas à chaque fois que vous voteriez.

J'ai deux contrôleurs, un appelé Grinders, et un appelé vote. (Les broyeurs sont essentiellement des postes)

Voici donc l'index de tous les broyeurs (on dirait que ceci)  Capture d'écran.

et voici le code à cette page. xxx

et c'est ce que j'ai dans les vues / grinders / _grinders.erb xxx

mais chaque fois que j'essaie de Votez pour un, je reçois l'erreur suivante:

Vous avez un objet nul quand vous ne l'attendiez pas! Vous auriez peut-être pu attendre une instance de tableau. L'erreur s'est produite lors de l'évaluation nul.each Capture d'écran d'erreur. J'ai essayé de tellement beaucoup de choses et je ne peux tout simplement pas le faire travailler! (Capture d'écran plus grande - http://grab.by/7bgb )

Toute aide? Si vous avez besoin de plus d'informations, demandez simplement!


1 commentaires

Pouvez-vous poster votre action index ici?


4 Réponses :


0
votes

Essayez <% = Render (: Partial => "Grinders / Meuleuses",: Object => @ginders)%>


0 commentaires

0
votes

Il semble que vos votes # Créer une action essaie de traiter les "broyeurs / _grinders.html.erb" partielle, qui est bizarre, car les appels AJAX ne produiraient probablement que JS ou JSON.

Pouvez-vous nous montrer le contenu des fichiers:

  1. app / vues / votes / create.rjs.erb
  2. App / contrôleurs / votes_controller.rb (surtout la méthode de création)

0 commentaires

18
votes

Pour réussir les données à une option partielle, utilisez l'option locaux . xxx

puis dans votre partial, référez-le comme meulers et pas @Grinders .

Cependant, étant donné que vous rendant une collection ici, c'est la manière idiomatique de rendu une collection: xxx

Ceci cherchera un nommé partiel " grinder.erbe 'et la variable locale qui sera transmise à la partielle, serait moulin (nom singulier de la collection). Avec cela, vous pouvez réellement vous débarrasser de la déclaration de boucle dans votre partielle. Vous pouvez également utiliser un nom personnalisé, dire my_grinder et une variable locale avec le même nom sera transmise à la partielle.

Pour en savoir plus, passez à travers ceci: http://guides.rubyonrails.org/layouts_and_rending.html


1 commentaires

Dans ce cas, @ginders pourrait être vide. Pouvez-vous inspecter l'objet @gRinders ? (Vous pouvez également mettre à jour votre question avec le code du contrôleur)



2
votes

dans les rails 3 C'est comme ça

index.html.erb xxx

_product.html.erb xxx

Quand une partie partielle est appelée avec une collection pluralisée, les instances individuelles de la partielle ont accès au membre de la collection étant rendue via une variable nommée après la partiel. Dans ce cas, le produit partiel est le produit, et dans le produit, vous pouvez faire référence au produit pour obtenir l'instance qui est rendu


0 commentaires