2012-02-15 8 views
0

J'ai dans mon fichier js.erbnest pas le lien à travailler dans mon fichier js.erb

var cart_item = "<table id='something' style='width:100%'>"; 
cart_item += "<tr><td>"; 
cart_item += "<%= @contact.name %>"; 
cart_item += "<%= link_to_remote 'Delete', :url => {:controller => 'registrations', :action => 'destroy' %>"; 
cart_item += "</td>"; 
cart_item += "</tr></table>"; 

$("#cart").append(cart_item); 

et il se bloque juste mais quand je commente le tout link_to_funtion fonctionne très bien. J'ai même essayé de faire ceci un link_to et il accroche toujours et ne fait rien ... suis-je manque quelque chose

+0

Que "juste" se bloque? –

+0

la chaîne cart_item n'est pas ajoutée au #cart avec la fonction link_to_ comme elle le devrait avec cet appel $ ("# cart"). Append (cart_item); – Trace

+0

Vous devez mettre à jour votre question pour inclure la version de Rails avec laquelle vous travaillez. link_to_remote était obsolète il y a un moment - même si vous pouvez l'obtenir via le prototype_helpers gem –

Répondre

2

Quatre choses.

Un: pas besoin de l'option :url. Vous pouvez simplement passer le hachage comme deuxième argument à link_to_remote et ça va marcher.

Deux: Vous devez utiliser les aides URL pour cela. En outre, si vous utilisez l'action destroy, vous souhaiterez probablement passer un ID. Cela signifie que vous feriez quelque chose comme ceci:

link_to_remote 'Delete', registration_path(id) 

Vous feriez quelque chose comme resources :registrations pour cela. Bien, pas sûr que les inscriptions sont au sein de votre application, donc je peux vraiment vous conseiller à ce sujet. Trois: le plus important, il vous manque le support bouclé pour le hachage sur la ligne link_to_remote. Cela déclencherait une erreur de syntaxe si vous l'omettez.

Quatre: link_to_remote est déprécié dans Rails 3.0. Vous devez utiliser link_to 'Delete', registration_path(id), :remote => true

+0

Je pense que c'est plus lié au lien ou quelque chose dans un js.erb .... j'ai changé la ligne pour cela pour tester et toujours les mêmes résultats \t ----------- cart_item + = "<% = link_to 'Remove', root_path%>"; – Trace

3

Extrait tout cela à un partiel, appelez _cart_item.html.erb:

<table id='something' style='width:100%'> 
<tr><td> 
<%= @contact.name %> 
<%= link_to 'Delete', {:controller => 'registrations', :action => 'destroy', :id => @contact.id}, :remote => true %> 
</td> 
</tr></table> 

Ensuite, votre fichier js.erb ressemblera à ceci:

$("#cart").append(<%= escape_javascript(render(:partial => "cart_item")) %>); 

Mais Ryan Bigg est toujours à droite , vous devez:

  • d'utiliser des routes RESTful et des routes d'aide.
  • utilisez :remote => true pour les demandes AJAX, comme je l'ai fait.
  • assurez-vous de passer un id à l'action destroy pour qu'il sache quel objet détruire.
+0

Merci pour la suggestion d'extraire quelques parties à un partiel cela a fonctionné pour moi. Utiliser ruby ​​dans js.erb est un peu déroutant. – tsega

Questions connexes