代码之家  ›  专栏  ›  技术社区  ›  Mithun Sreedharan Kuldeep Modi

Rails链接到onclick javascript中的ruby变量

  •  6
  • Mithun Sreedharan Kuldeep Modi  · 技术社区  · 15 年前

    这句话有什么不对 显示语法错误

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

    但是

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

    正在正确生成以下代码

    <a title="Delete" onclick="removeQuestion();return false" class="action remove" href="/quizzes/remove/1"><img src="/images/cancel.png?1290165811" alt="Cancel"></a>
    
    2 回复  |  直到 15 年前
        1
  •  10
  •   Chirantan    15 年前

    你写的

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

    这些炸弹是因为 question.id 是一个Fixnum。你会得到 can't convert Fixnum into String TypeError .

    解决这个问题的方法

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

    或者

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

    这将把问题id作为字符串发送到removeQuestion javascript函数。

    或者

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

    这将把问题id作为整数发送到removeQuestion javascript函数。

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

    这样就行了