rails 3 javascript没有执行,尽管文本/ javascript内容类型作为响应

我正在页面上执行非ajax GET请求。 在相应的控制器/动作中,我正在返回javascript。 但是,这个javascript没有被执行。 相反,它在我的浏览器上显示为文本。

被击中的动作:

def my_action render :template => 'shared/_alert.js.erb', :content_type => 'text/javascript' end 

js.erb文件:

 alert("hello"); 

Charles HTTP请求:

 GET /my_action HTTP/1.1 Host: 172.16.151.186:3000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1.2 Safari/534.52.7 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Cache-Control: max-age=0 Accept-Language: en-us Accept-Encoding: gzip, deflate Cookie: _session_id=BAh7CEkiD3Nlc3Npb25faWQGOgZFRiIlZGZhMjFkOWRlNDQ3ZThlYjRiMzljNzMyMjg0N2E2YmJJIhBfY3NyZl90b2tlbgY7AEZJIjFtZ05jUmsxZlRIQ1FCaVVLczVCeUF2STNtY1gzUzhucTk3alF4RjVsVklFPQY7AEZJIhRjdXJyZW50X3VzZXJfaWQGOwBGSSIpYjMwNzg5NzItNDQzNi0xMWUxLTk5YzUtNGY3NjNlNzJhZmIyBjsARg%3D%3D--e345e67c4b130d2f3e4bdb48bd3d5d4f892f8272 Pragma: no-cache Connection: keep-alive 

查尔斯HTTP响应:

 HTTP/1.1 200 OK Content-Type: text/javascript; charset=utf-8 Etag: "9b9a7c156c510c98d7fd224227f7431f" Cache-Control: max-age=0, private, must-revalidate X-Ua-Compatible: IE=Edge X-Runtime: 0.246125 Server: WEBrick/1.3.1 (Ruby/1.9.2/2011-07-09) Date: Sat, 21 Jan 2012 15:23:09 GMT Content-Length: 15 Connection: Keep-Alive Set-Cookie: _session_id=BAh7CEkiD3Nlc3Npb25faWQGOgZFRiIlZGZhMjFkOWRlNDQ3ZThlYjRiMzljNzMyMjg0N2E2YmJJIhBfY3NyZl90b2tlbgY7AEZJIjFtZ05jUmsxZlRIQ1FCaVVLczVCeUF2STNtY1gzUzhucTk3alF4RjVsVklFPQY7AEZJIhRjdXJyZW50X3VzZXJfaWQGOwBGSSIpYjMwNzg5NzItNDQzNi0xMWUxLTk5YzUtNGY3NjNlNzJhZmIyBjsARg%3D%3D--e345e67c4b130d2f3e4bdb48bd3d5d4f892f8272; path=/; HttpOnly alert("hello"); 

有人可以帮我解决这个问题吗?

谢谢。

如果你想实现你在评论中所说的内容:“用户想要从第X页转到第Y页,但是出现了错误。” 执行此操作的标准方法是将flash [:error]哈希值设置为您的邮件,然后重定向回引用页面。 在你的布局中,你有一些erb片段,如:

 <% if flash[:error %> 
<%= flash[:error] %>
<% end %>

在您的控制器上,您将设置一个前置filter,如:

 before_filter :validate_user def before_filter if  flash[:error] = "Oops...you are not logged in" redirect_to :back # or some_defined_path end end