Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何防止HAML对我的助手方法进行编码_Ruby On Rails_Ruby_Haml - Fatal编程技术网

Ruby on rails 如何防止HAML对我的助手方法进行编码

Ruby on rails 如何防止HAML对我的助手方法进行编码,ruby-on-rails,ruby,haml,Ruby On Rails,Ruby,Haml,我的助手身上有这个: content_tag(:li, "All", { :onclick => %(hideAll(); document.getElementById("vl-body").children[0].style.display = "block") } ) + 哈姆制作了这个: <li onclick="hideAll(); document.getElementById(&quot;vl-body&quot;).children[0].s

我的助手身上有这个:

    content_tag(:li, "All", { :onclick => %(hideAll(); document.getElementById("vl-body").children[0].style.display = "block") } ) +
哈姆制作了这个:

<li onclick="hideAll(); document.getElementById(&quot;vl-body&quot;).children[0].style.display = &quot;block&quot;">All</li>
  • 全部
  • 不能有那些已编码的引号。我想使用%符号,而不是双引号,因此感谢使用%的帮助,因为HAML不会这样编码

    提前谢谢

    #your view
    
    %li#some_id
      All
    
    #application.js without jquery
    document.getElementById('some_id').click(function(){
      hideAll(); 
      document.getElementById("vl-body").children[0].style.display = "block";
    });
    
    另一个不那么固执己见的答案:

    content_tag(:li, "All", { :onclick => %(hideAll(); document.getElementById("vl-body").children[0].style.display = "block") } ).html_safe
    

    我注意到您的内容标签代码中有尾随的加号,这重要吗?

    为什么您收到的输出错误?你期望的结果是什么?您所指的“双引号”是什么?我期望的输出是haml不会对引号进行编码-正如您在我的示例中看到的,haml将其编码为“”,我的内联js代码现在将如何执行。a)无论如何,您的HTML中不应该有js,b)您的js将执行得很好,因为
    将变成
    由浏览器在将HTML传递给脚本引擎之前解析HTML。哈姆在这里所做的是正确的。如果您有
  • 我希望您能看到这将是无效的HTML。是否通过浏览器引擎“转换为”?认真地在任何情况下,我的浏览器中都会出现JS错误。所以你的意思是当你把它写出来嵌入到你的html中时,它会工作吗?document.getElementById(“someid"e”).innerHTML=“test”是的,说真的。这里有证据证明:如果你遇到问题,这不是问题。将你的输出的实际测试用例作为一个单独的问题发布,以获取更多帮助。这根本不是问题的答案,而是+1,为如何将JS附加到HTML给出正确答案。(虽然您假设了jQuery,OP没有声明它,并且似乎没有使用它。)这是一个固执己见的答案。:)我认为如果您将事件绑定更改为
    document.getElementById('some_id')。onclick=function(){…},它会更好(在没有jQuery的情况下由OP使用)
    你说得对,做得对。我认为没有理由不使用jquery,因为每个人的浏览器缓存中都有jquery。我需要它是内联的,请不要使用jquery。我正在制作一个插件,以确保它在任何人的平台上都能正常工作。所以,是的,我想我仍然在想为什么我的“被编码到”中