0

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

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

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

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

4

2 回答 2

2

比较以下两个片段:

<!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)包装它

于 2012-09-19T08:02:40.237 回答
0

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

尝试使用(在此处使用 JQuery)发送 AJAX 请求:

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

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

简短的版本是

$.getScript('/index/url');
于 2012-09-19T07:17:39.397 回答