2010-11-25 11 views
6

Was mit dieser Aussage falsch ist Es zeigt SyntaxfehlerRails link_to Ruby-Variable in Onclick Javascript

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

Aber

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

korrekt den Code unten zu erzeugen

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

zeigen Bitte geben Sie die Syntaxfehler, die Sie bekommen. –

+0

Was ist die Syntaxfehlermeldung? –

+0

ALS bitte nur die Fragen mit der * Sprache * taggen, zusätzliche Tags wie "helpers"/"link-to" sind nicht hilfreich und sind nur tagsspam :( –

Antwort

10

Was du geschrieben hast

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

Diese Bomben, weil question.id ist ein Fixnum. Sie würden can't convert Fixnum into StringTypeError erhalten.

Möglichkeiten, dies Dadurch wird die Frage-ID als String an Ihre removeQuestion Javascript-Funktion senden

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

ODER

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

zu lösen.

ODER

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

Dies wird die Frage-ID als Integer an Ihre removeQuestion Javascript-Funktion senden.

+0

Der letzte wird es nicht als Integer, sondern als Double senden , weil JavaScript nur Double kennt Ok, es ist kompatibel mit 32bit Integer, aber trotzdem. – panzi

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

Dies funktioniert