Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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 在js.erb文件中呈现部分_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 在js.erb文件中呈现部分

Ruby on rails 在js.erb文件中呈现部分,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在尝试创建一个基于ajax的评论表单,它将在提交时更新我的评论列表。非常基本的东西 我有一个部分的comments/_single.html.haml,它有一个带有基本评论信息的/code>标记,下面是我的comments/create.js.erb文件(实际上,这是三个不同的测试文件合并成一个,向您展示我的问题): $('#comments ul.comments')。追加('comments/single',:locals=>{:c=>@comment}%>); $(“#comments

我正在尝试创建一个基于ajax的评论表单,它将在提交时更新我的评论列表。非常基本的东西

我有一个部分的
comments/_single.html.haml
,它有一个带有基本评论信息的
  • /code>标记,下面是我的
    comments/create.js.erb
    文件(实际上,这是三个不同的测试文件合并成一个,向您展示我的问题):

    $('#comments ul.comments')。追加('comments/single',:locals=>{:c=>@comment}%>);
    $(“#comments ul.comments')。追加(“'comments/foobar”%”);
    $('#comments ul.comments')。附加(“foobar”);
    警报(“foobar”);
    
    comments/_foobar.html.haml
    的内容只是
    foobar
    ,里面没有html。
    我的问题是前两行不行。我的dev服务器控制台中没有错误,objectinspector说注释代码返回正确,但它们没有添加到我的注释列表中。第三行很好,第四行也很好。使用
    render

    在Javascript代码中呈现部分时,似乎存在一些问题,您应该使用escape\u Javascript方法,如下所示

    $('#comments ul.comments').append("<%= escape_javascript render(:partial => 'comments/single', :locals => { :c => @comment }) %>");
    
    $('#comments ul.comments')。追加('comments/single',:locals=>{:c=>@comment})%>”;
    
    此方法别名为j,因此您也可以执行此操作

    $('#comments ul.comments').append("<%= j render(:partial => 'comments/foobar') %>");
    
    $('#comments ul.comments')。追加('comments/foobar')%>”;
    
    该方法对JavaScript段转义回车、单引号和双引号


    感谢大家不要忘记escape_Javascript方法。简化版本中的局部变量发生了什么变化
    $('#comments ul.comments').append("<%= j render(:partial => 'comments/foobar') %>");