将ruby插值嵌入到html字符串(变量)的<script>标记中?

时间:2015-08-20 19:53:57

标签: javascript ruby-on-rails ruby string-interpolation

我正在努力将ruby插值嵌入到字符串变量中,这是一个html字符串。我想这听起来有点令人困惑,我希望代码有助于理解:

&#xA;&#xA;
  def devise_error_messages!&#xA; return''if resource.errors.empty?&#xA; messages = resource.errors.full_messages&#xA; html =&lt;&lt; -HTML&#xA; &lt; script type ='text / javascript'&gt;&#xA; toastr.options = {&#xA; 'closeButton':是的,&#xA; 'debug':false,&#xA; 'newestOnTop':false,&#xA; 'progressBar':false,&#xA; 'positionClass':'toast-bottom-left',&#xA; 'preventDuplicates':true,&#xA; 'onclick':null,&#xA; 'showDuration':'3000',&#xA; 'hideDuration':'1000',&#xA; 'timeOut':'5000',&#xA; 'extendedTimeOut':'1000',&#xA; 'showEasing':'swing',&#xA; 'hideEasing':'linear',&#xA; 'showMethod':'fadeIn',&#xA; 'hideMethod':'fadeOut'&#xA; }&#XA; #{messages.each do | m | }&#XA; toastr [ '错误']( “#{M}”);&#XA; #{端}&#XA;&#XA; &LT; /脚本&GT;&#XA; HTML&#XA;&#XA; html.html_safe&#XA;结束&#xA;  
&#xA;&#xA;

因此,正如您所看到的,我正在尝试迭代 messages 数组并为每个生成消息这行js代码: toastr ['error'](“#{m}”);

&#xA;&#xA;

你可以帮我一下吗?正确实施?

&#xA;

1 个答案:

答案 0 :(得分:1)

您可以将每个块移动到HTML标记之外,只需将结果存储在字符串中,然后将该字符串附加到脚本标记内。

str = ""
messages.each do |m|    
  str += "toastr['error'](" + '"' + m + '"' + '); '
end

str变量放在您想要的块中。

toastr.options = {
  ...
}
#{str}
...