繁体   English   中英

Ruby on Rails:将HTML部分渲染为一行字符串

[英]Ruby on Rails: Render HTML partial as a one line of string

有没有办法将html.erb局部渲染为一行字符串?

我试图在javascript中渲染_foo.html.erb部分,这样我就可以将整个html文档用作字符串变量。

我试过以下代码:

var foo = "<%= render :partial => "foo" %>";

在_foo.html.erb中,假设我有以下内容:

<h1>Hello</h1>
<p>World</p>

这种方式会在javascript中给我一个语法错误,因为部分中有CRLF。 但是,如果我写代码...

<h1>Hello</h1>" +
"<p>World</p>

现在,这不是javascript中的错误。 我可以采用后一种方式,但如果部分包含许多带有ruby脚本的代码行,那将是一场灾难。

有没有其他办法?

提前致谢。

使用escape_javascript函数:

var foo = "<%= escape_javascript(render :partial => 'foo') %>";

快速而肮脏的黑客:

var foo = "<%= render(:partial => "foo").gsub(/[\n\r]/, ' ') %>";

这只是用空格替换换行符,从HTML解析器的角度来看是无操作。

但是,这是一种非常脆弱的创建JavaScript对象的方法。 您需要考虑部分中的引号,这会使您的JavaScript无效等等。我建议您尝试为要渲染的HTML创建JavaScript模板,并使用模型的JSON版本填充它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM