繁体   English   中英

香草javascript渲染平面文本铁路

[英]vanilla javascript rendering plane text RAILS

我一直在使用vanilla javascript,我只是渲染一个简单的警报消息,但它将JS代码呈现为视图中的平面字符串。 这是我的代码

def index
render :js => "alert('Hello Rails');"
end

它呈现相同的字符串“alert('Hello Rails');” 对于我而言,而不是警报消息。 我在Rails 3和Rails 指南中代码看起来不错。

任何答案将不胜感激。 谢谢

比较以下两个片段:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script>
    alert('Hello Rails');
    </script>
</body>
</html>

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    alert('Hello Rails');
</body>
</html>

第一个生成警报消息,第二个只显示字符串。 浏览器不执行JS代码,除非它包含<script>标记。 @Erez答案中的jQuery ajax调用也在内部用<script>包装响应。

因此,如果您直接访问您的操作,请尝试使用<script>包装它,或者更好地使用javascript_tag帮助程序(http://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptHelper.html#method-i-javascript_tag)

你正在渲染JS好。 问题在于接收此JS的浏览器并将其显示为纯文本。

尝试发送一个AJAX请求(在这里使用JQuery):

$.ajax(url: '/index/url', type: 'GET', dataType: 'script')

请注意,dataType设置为script,这意味着JQuery将以JS的形式执行返回的文本。

这个的简短版本将是

$.getScript('/index/url');

暂无
暂无

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

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