Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
Jquery 如何在rails中发回js.haml_Jquery_Ruby On Rails_Haml - Fatal编程技术网

Jquery 如何在rails中发回js.haml

Jquery 如何在rails中发回js.haml,jquery,ruby-on-rails,haml,Jquery,Ruby On Rails,Haml,我有一个rails创建操作,它在一个文件中发回一些jquery: create.js.erb var appearance = $("<%= escape_javascript(render(:partial => @appearance)) %>").effect("highlight", {color: '#E6ff00'}, 2000); $("#sortable").append(appearance); $("#new_appearance")[0].reset();

我有一个rails创建操作,它在一个文件中发回一些jquery:

create.js.erb

var appearance = $("<%= escape_javascript(render(:partial => @appearance)) %>").effect("highlight", {color: '#E6ff00'}, 2000);
$("#sortable").append(appearance);
$("#new_appearance")[0].reset();
var-appearance=$(“@appearance))%>”。效果(“突出显示,{color:'#E6ff00'},2000);
$(“#可排序”).append(外观);
$(“#新外观”)[0]。重置();
我已经开始使用HAML,想知道我应该如何转换它。我可以使用js.haml吗?
如果是这样,标记应该是什么样子?

Haml的真正目的是生成HTML。理论上,您可以使用
create.js.haml
,但在编写Javascript时,ERB更有意义。

在js.haml中,它看起来像

!= "var appearance = $('<%= escape_javascript(render(:partial => @appearance)) %>').effect('highlight', {color: '#E6ff00'}, 2000);"
!= "$('#sortable').append(appearance);"
!= "$('#new_appearance')[0].reset();"
!=“var-appearance=$('@appearance))%>”)。效果('highlight',{color:'E6ff00',2000);”
!= “$('#可排序')。附加(外观);”
!= “$('#新外观')[0]。重置();”

请注意HAML!=防止生成的文本被HTML转义的语法。我确实同意ERB更适合这里,但是为了一致性,您可能仍然希望采用HAML的方式。

实际上,在HAML中返回JS非常简单,只需使用:plain过滤器并将您想要在#{}中计算的任何内容括起来即可

不要使用:javascript过滤器,因为它会将所有不必要的内容都包含在标记中

如果需要使用一些逻辑,只需将:plain放在嵌套中即可

- if params[:printing]
  :plain
    $('#print-view').html("#{escape_javascript(render 'print_preview')}");

抱歉,ERB.

看来你不需要这个!=在每一行前面。以下内容对我来说很好。Im使用Rails 3和最新版本的HAML

$('#comments_table_header').after('#{escape_javascript(render :partial => 'row', :locals => { :comment => @comment })}');

想解释一下为什么在编写Javascript时使用ERB“更有意义”吗?我觉得HAML很好,更干净,也可以和咖啡脚本一起使用。ty@Florin因为Haml是专门为HTML和XML的语法而设计的。当您使用它生成任何其他内容时,您需要做太多的转义或其他工作,以避免输出不是HTML或XML这一事实。Haml很干净,但仅适用于HTML/XML。如果可以使用诸如:javascript或:plain之类的过滤器,则无需转义,请参阅上面接受的答案。@Florin但这仅在嵌入HTML或XML时才有效。如果您需要生成一个至少没有用HTML或XML封装的文档,那么使用Haml是没有意义的。请注意,最新版本的Haml不需要
:plain
。我仍然使用rails 3和Haml 3.1.7获取原始HTML
$('#comments_table_header').after('#{escape_javascript(render :partial => 'row', :locals => { :comment => @comment })}');