2010-09-09 7 views
3

Pour l'amour de dieu, je me suis cogné la tête pendant des heures. Utilisation de rails3 rc, 1.9.2. J'essaye de créer un link_to qui soumet une requête d'ajax, avec des paramètres, une classe et un id, et a besoin d'un bloc ainsi je peux insérer un tag d'envergure autour du nom. La documentation est d'une aide absolue, tout comme de nombreuses recherches sur google. Voici ce que j'ai jusqu'à présent:Syntaxe pour link_to avec bloc dans rails3 avec: remote => true et incluant: class et: id

<%= link_to(
     :url=>{ 
     :controller => 'themes', :action => 'remove_tag', 
     :entity_id => entity_id, :theme_id => theme_id, 
     :entity => entity, :element_id => element_id, :parent_id=>parent_id 
     }, 
     :remote => true, 
     :id => "theme-tag-#{entity}-#{entity_id}", 
     :class => "tag") do %> 
    <span class='subtract'><%= tag %></span> 
<% end %> 

L'URL généré ressemble à ceci:

<a href="/explore/index/theme-tag-user-3?url[controller]=themes&amp;url[action]=remove_tag&amp;url[entity_id]=3&amp;url[theme_id]=16&amp;url[entity]=user&amp;url[element_id]=filter-contributor-3&amp;url[parent_id]=filter-contributors&amp;remote=true&amp;class=tag"> 

test descripteur

Je ne peux pas bien indiquer que le texte "descripteur de test" est en fait correctement inclus dans la durée; la mise en forme du code échoue un peu ici, cependant, le href est faux, il n'y a pas de classe ou id, et il continue à rouler

Si je n'avais pas besoin du bloc, je pourrais simplement ajouter le nom et ne pas avoir à Spécifiez: url => {...} (quitter si off renvoie une exception avec le bloc, allez à la figure) puis suivez cela avec: remote => true,: id => "whatever",: class => "blah" et il fonctionne. Qu'est-ce que je fais mal? Parce que je suis nouveau sur les rails en général, je voudrais aussi comprendre pourquoi cette syntaxe doit différer autant? Je veux dire vraiment, Dieu merci, vous ne devez pas écrire beaucoup de liens comme celui-ci dans une application web ... ;-)

Merci à l'avance

Répondre

3

s'avère que vous devez faire url_for (.. .) au lieu de: url => {...} et tout a fonctionné comme prévu.

+0

Pouvez-vous montrer comment utiliser url_for avec link_to dans un exemple? – simo

+0

@SamirSabri Voici le code que j'ai fini par utiliser comme réponse à cette question: <% = link_to (url_for (: controller => 'themes',: action => 'remove_tag',: entity_id => entity_id,: theme_id => theme_id,: entité => entité,: id_élément => id_élément,: id_parent => parent_id),: distant => vrai,: id => "étiquette-de-thème - # {entité} - # {id_entité}") \t \t \t \t \t \t <%= tag %> \t \t \t <% end %> Je suis nouveau sur les rails à ce moment, donc je formate sans doute différemment, mais le point principal est toujours valide. J'espère que cela pourra aider – wkhatch

2

Il suffit de mettre le commentaire de wkhatch ici pour qu'il soit bien formaté.

<%= link_to(
    url_for(:controller=>'themes', 
      :action=>'remove_tag', 
      :entity_id=>entity_id, 
      :theme_id=>theme_id, 
      :entity=>entity, 
      :element_id=>element_id, 
      :parent_id=>parent_id), 
    :remote=>true, 
    :id=>"theme-tag-#{entity}-#{entity_id}") do %> 
     <span class='subtract'></span><%= tag %> 
<% end %> 
Questions connexes