Ruby on rails 铁路线路在IE中不稳定

Ruby on rails 铁路线路在IE中不稳定,ruby-on-rails,internet-explorer,routing,Ruby On Rails,Internet Explorer,Routing,为了使用jQuery、Orbited和FasterCSV,我制作了一个Rails聊天应用程序 你可以浏览到一个URL,这里有一个类似IRC的聊天窗口。您还可以通过访问相同的URL,但在URL中添加“.csv”扩展名来导出聊天窗口的内容 HTML版本:http://host.name/channel/sweetchatroom CSV版本:http://host.name/channel/sweetchatroom.csv 在Firefox、Safari和Chrome中,它正常工作。在IE中,如果

为了使用jQuery、Orbited和FasterCSV,我制作了一个Rails聊天应用程序

你可以浏览到一个URL,这里有一个类似IRC的聊天窗口。您还可以通过访问相同的URL,但在URL中添加“.csv”扩展名来导出聊天窗口的内容

HTML版本:
http://host.name/channel/sweetchatroom

CSV版本:
http://host.name/channel/sweetchatroom.csv

在Firefox、Safari和Chrome中,它正常工作。在IE中,如果我访问“HTML”URL,我会得到页面的CSV版本。我必须手动将“.html”添加到URL,如下所示:

http://host.name/channel/sweetchatroom.html
我的路线目前如下所示:

map.chat '/channel/:name.:format', :controller => 'channels', :action => 'show'
我在谷歌上搜索了一下,尝试了以下建议:

map.slug '/channel/:slug.:format', :controller => 'channels', :action => 'show', :defaults => {:format => 'html'}
--及--

他们两个都不工作。显然,如果访问URL时未指定格式,Rails不会将
params[:format]
设置为任何内容。原则上我更喜欢,但是文档非常清楚,你可以设置一个默认格式,我不知道为什么它不支持这个。“:defaults=>…”建议是Rails文档中的内容

为了使其正常工作,我必须更换通道控制器的这一部分:

respond_to do |format|
  format.csv { 
    send_data channel_to_csv(@channel),
      :type => "text/plain",
      :filename => "#{@channel.slug}.csv",
      :disposition => 'inline'
  } 
  format.html # show.html.erb
  format.xml  { render :xml => @channel }
end
为此:

respond_to do |format|
  format.csv { 
    send_data channel_to_csv(@channel),
      :type => "text/plain",
      :filename => "#{@channel.slug}.csv",
      :disposition => 'inline'
  } if params[:format] == 'csv' # <-- Here is the change
  format.html # show.html.erb
  format.xml  { render :xml => @channel }
end
respond|to do |格式|
format.csv{
发送数据通道至csv(@channel),
:type=>“文本/普通”,
:filename=>“#{@channel.slug}.csv”,
:disposition=>“inline”
}如果参数[:format]=“csv”#@channel}
结束
它工作得很好,但看起来真的很粗糙。必须有更好、更“红宝石”的方式。我的routes条目是否语法错误?看来这应该是路线


我知道我肯定错过了什么。我在Google或StackOverflow上找不到关于这个问题的好信息。这通常意味着我已经陷入困境。

我通常只是把format.html放在第一位。这样,当IE发送一个奇怪的accepts头(比如
*/*
)时,它就不会被弄脏。基本上,如果IE表示它接受所有内容(比如URL上没有扩展名),Rails将首先发送匹配的内容。

这是我考虑过的事情之一,无论出于什么原因,我都没有尝试过。+1表示在标题中使用“wonky”。这是rails 2.0 IE接受标题的问题。谷歌搜索“rails ie接受”。
respond_to do |format|
  format.csv { 
    send_data channel_to_csv(@channel),
      :type => "text/plain",
      :filename => "#{@channel.slug}.csv",
      :disposition => 'inline'
  } if params[:format] == 'csv' # <-- Here is the change
  format.html # show.html.erb
  format.xml  { render :xml => @channel }
end