2010-11-25 8 views
6

Quel est le problème avec cette déclaration Il montre d'erreur de syntaxeRails LINK_TO variables rubis en javascript onclick

<%= link_to image_tag('cancel.png'), {:action => 'remove', :id => question.id}, :title=>'Delete', :class=>'action', :onclick=>"removeQuestion("+ question.id +");return false;"%> 

Mais

<%= link_to image_tag('cancel.png'), {:action => 'remove', :id => question.id}, :title=>'Delete', :class=>'action', :onclick=>"removeQuestion();return false;"%> 

est la génération correctement le code ci-dessous

<a title="Delete" onclick="removeQuestion();return false" class="action remove" href="/quizzes/remove/1"><img src="/images/cancel.png?1290165811" alt="Cancel"></a> 
+0

S'il vous plaît montrer l'erreur de syntaxe que vous obtenez. –

+0

quel est le message d'erreur de syntaxe? –

+0

S'il vous plaît ne faites que taguer les questions avec la * langue *, des balises supplémentaires telles que "helpers"/"link-to" ne sont pas utiles et sont juste tagspam :( –

Répondre

10

Ce que vous avez écrit

<%= link_to image_tag('cancel.png'), {:action => 'remove', :id => question.id}, :title=>'Delete', :class=>'action', :onclick=>"removeQuestion("+ question.id +");return false;"%> 

Cette bombe parce que question.id est un Fixnum. Vous obtiendriez can't convert Fixnum into StringTypeError.

façons de résoudre ce

<%= link_to image_tag('cancel.png'), {:action => 'remove', :id => question.id}, :title=>'Delete', :class=>'action', :onclick=>"removeQuestion("+ question.id.to_s +");return false;"%> 

OU

<%= link_to image_tag('cancel.png'), {:action => 'remove', :id => question.id}, :title=>'Delete', :class=>'action', :onclick=>"removeQuestion('#{question.id}');return false;"%> 

Cela envoie l'identifiant de question comme une chaîne à votre removeQuestion fonction javascript.

OU

<%= link_to image_tag('cancel.png'), {:action => 'remove', :id => question.id}, :title=>'Delete', :class=>'action', :onclick=>"removeQuestion(#{question.id});return false;"%> 

Cela envoie l'id question comme un entier à votre removeQuestion fonction javascript.

+0

Le dernier ne l'enverra pas comme un entier mais comme un double , car JavaScript ne connaît que le double Ok, il est compatible avec les entiers 32 bits, mais quand même. – panzi

1
<%= link_to image_tag('cancel.png'), {:action => 'remove', :id => question.id}, :title=>'Delete', :class=>'action', :onclick=>"removeQuestion($(this).attr('id'));return false;"%> 

Cela fonctionne