2010-11-25 17 views
6

ciò che è sbagliato con questa affermazione E sta mostrando errore di sintassiRails link_to variabile rubino a onclick javascript

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

Ma

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

sia correttamente generando il codice qui sotto

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

prega di mostrare l'errore di sintassi che stai ricevendo. –

+0

qual è il messaggio di errore di sintassi? –

+0

Inoltre, si prega di contrassegnare solo le domande con * lingua *, tag aggiuntivi come "helper"/"link-to" non sono utili e sono solo tagspam :( –

risposta

10

Cosa hai scritto

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

Queste bombe perché question.id sono un Fixnum. Otterresti can't convert Fixnum into StringTypeError.

modi per risolvere questo

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

O

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

Questo invierà la questione id come stringa al vostro removeQuestion funzione javascript.

O

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

Questo invierà la questione id come un intero al vostro removeQuestion funzione javascript.

+0

L'ultimo non lo invierà come numero intero ma come doppio , perché JavaScript conosce solo il doppio. Ok, è compatibile con interi a 32 bit, ma comunque. – panzi

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

Ciò funzionerà