我一直在使用香草 javascript,我只是呈现一个简单的警报消息,但它将 JS 代码呈现为视图中的平面字符串。这是我的代码
def index
render :js => "alert('Hello Rails');"
end
它呈现相同的字符串“alert('Hello Rails');” 对我来说,而不是警报消息。我在 Rails 3 中,并且作为 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 并将其显示为纯文本的浏览器。
尝试使用(在此处使用 JQuery)发送 AJAX 请求:
$.ajax(url: '/index/url', type: 'GET', dataType: 'script')
请注意,dataType 设置为 script,这意味着 JQuery 会将返回的文本作为 JS 执行。
简短的版本是
$.getScript('/index/url');