vanilla JavaScript 渲染平面文本 RAILS



我一直在使用原版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')

请注意,数据类型设置为脚本,这意味着 JQuery 将返回的文本作为 JS 执行。

这个的简短版本是

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

最新更新