Rails3使用text/html内容类型而不是text/javascript呈现js.erb模板
我正在用3.0.0.beta3构建一个新的应用程序。我只是尝试将js.erb模板呈现给Ajax请求,以执行以下操作(在publications_controller.rb中): 目前,我的get_pubmed_data.js.erb模板非常简单Rails3使用text/html内容类型而不是text/javascript呈现js.erb模板,javascript,ajax,ruby-on-rails-3,content-type,Javascript,Ajax,Ruby On Rails 3,Content Type,我正在用3.0.0.beta3构建一个新的应用程序。我只是尝试将js.erb模板呈现给Ajax请求,以执行以下操作(在publications_controller.rb中): 目前,我的get_pubmed_data.js.erb模板非常简单 alert('<%= @publication.title %>') 这很好,只是浏览器中没有发生任何事情,可能是因为响应的内容类型是“text/html”,而不是“text/javascript”,如此处部分复制的响应标题所示: Stat
alert('<%= @publication.title %>')
这很好,只是浏览器中没有发生任何事情,可能是因为响应的内容类型是“text/html”,而不是“text/javascript”,如此处部分复制的响应标题所示:
Status 200
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Transfer-Encoding chunked
Content-Type text/html; charset=utf-8
这是一个错误还是我遗漏了什么?谢谢你的帮助 我终于能够在响应中获得正确的内容类型,方法是强制使用:
respond_to do |format|
format.js {render :content_type => 'text/javascript'}
end
有一个类似的问题,js文件将作为文本文件加载,但最终只是我的纸条加载顺序错误 替换
<%= javascript_include_tag :all %>
与
还要注意的是,getscript方法
ie替换:
onClick="<%= get_pubmed_data_path(:format => :js) %>"
onClick=“:js)%>”
与:
onClick=“$.getScript(':js))%>”
对于Rails 3.1.1,我遇到了类似的问题。即使我在控制器中明确提到format.js,我的响应也会呈现为html。问题是我的资产中有jquery.js文件,并且被模板加载。jQueryRails使用它自己的jquery副本,并且由于某些原因,加载这些文件会导致rails将响应呈现为html。可能会帮助其他人解决这个问题。我也遇到了同样的问题,结果是我在控制器上创建了一个名为content\u type的方法,该方法覆盖了默认值。太好了,我明天将首先尝试一下……嗯,它不起作用。仍然在布局中嵌入我的js.erb模板。我唯一能看到的是您可能想要升级rails(假设您仍然使用beta3)。有了Rails 3.0.0,它对我来说很有用。祝你好运如何调用获取公共数据
?在Rails 3中,您必须执行以下操作::publications,:action=>:get_pubmed_data,:remote=>true%>
调用get_pubmed_data很好,通过javascript observe_field函数完成,并使用XMLHttpRequest请求标题请求正确的-您最终是如何解决这个问题的?我也有同样的问题,无论我加载的顺序如何,都有一些东西坏了。
<%= javascript_include_tag :all %>
<%= javascript_include_tag "jquery.min" %>
<%= javascript_include_tag "jquery-ui.min" %>
<%= javascript_include_tag "rails" %>
onClick="<%= get_pubmed_data_path(:format => :js) %>"
onClick="$.getScript('<%= escape_javascript(get_pubmed_data_path(:format => :js)) %>');"