2010-11-25 13 views
6

Qué está mal con esta declaración Está mostrando error de sintaxisrieles link_to variable de rubí en onclick javascript

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

Pero

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

está generando correctamente el código de abajo

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

Por favor, muestran el error de sintaxis que está obteniendo. –

+0

¿cuál es el mensaje de error de sintaxis? –

+0

También, por favor, solo marque las preguntas con el * idioma *, las etiquetas adicionales como "ayudantes"/"vínculo a" no son útiles y son simplemente tagspam :( –

Respuesta

10

Lo que escribió

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

Este bombas porque question.id es un Fixnum. Obtendrá can't convert Fixnum into StringTypeError.

maneras de resolver este

<%= 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;"%> 

Esto enviará la pregunta Identificación como una cadena a su removeQuestion función javascript.

O

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

Esto enviará la pregunta Identificación como un entero a su removeQuestion función javascript.

+0

El último no lo enviará como un número entero sino como un doble , porque JavaScript solo sabe el doble. Ok, es compatible con enteros de 32 bits, pero aún así. – panzi

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

Esto funcionará

Cuestiones relacionadas