【问题标题】:rails sending the wrong content-type in ajax responserails 在 ajax 响应中发送错误的内容类型
【发布时间】:2011-09-20 09:10:38
【问题描述】:

一天中的大部分时间我都在为以下问题苦苦挣扎:

  • 我有一个 rails 3.1 应用程序 - 运行良好
  • 我正在尝试添加一些 ajax 到它

但是,无论我尝试什么,Rails 都坚持在响应标头中发送错误的内容类型。

#the form    
= form_for @signup, :url => '/signup', :remote => true do |f|
    = f.text_field :email, :class => 'email', :size => 26
    = f.submit 'Notify me'

#In the controller
def create
  respond_to do |format|
    format.js { render :content_type => 'text/javascript', :layout => false}
  end
end

#the JS file: create.js.erb
alert('HI!');

这是行不通的,但我认为它应该。使用 Firebug 检查服务器响应,它告诉我响应标头的内容类型为text/html。我认为这就是它不起作用的原因(就像在新生成的应用程序上,使用相同的 jquery-rails gem 它以 text/javascript 标头响应。

服务器它正在用 JS 响应:

Processing by SignupsController#create as JS

但不知何故拒绝发送正确的标头。我不知道下一步该往哪里看。

任何关于下一步看哪里的帮助或指导将不胜感激! 欧文

【问题讨论】:

    标签: ruby-on-rails ajax jquery ruby-on-rails-3.1 ujs


    【解决方案1】:

    好的,找到了解决方案,

    因此,应用程序控制器中的 after_filter 覆盖了内容类型。并且它们是由内而外处理的。所以它覆盖了我的声明。

    【讨论】:

    • 谢谢!这让我走上了正确的道路。应用程序中的后过滤器将 headers['Content-Type'] 显式设置为 text/html。因此,我无法以通常的方式在 respond_to 块中设置 content_type。我可以通过在响应块中调用 headers['Content-Type'] = 'text/javascript' 来覆盖它。
    猜你喜欢
    • 1970-01-01
    • 2022-07-20
    • 2017-11-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2013-08-29
    相关资源
    最近更新 更多