Ошибка HTTP 406 с rails 3.0 и Internet Explorer 9.0 при использовании render: update - PullRequest
1 голос
/ 04 января 2012

У меня есть устаревший веб-сайт, основанный на ruby ​​on rails 3.0.9, который прекрасно работает с Firefox, chrome и IE 8, но я каждый раз получаю сообщение об ошибке HTTP 406 при проверке веб-сайта с помощью Internet Explorer 9. I сузил проблему до трио respond_to + format.js + render :update, но мне до сих пор не удалось решить проблему.

Я создал небольшой пример для воспроизведения:

Действие с контроллера:

  def change
    if params[:kind]
      respond_to do |format|
        format.js do
          render :update do |page|
            # originally we have a much more complicated logic here
            # ...
            page.replace_html 'list_of_numbers', :partial => params[:kind]
            # we even have this:
            # page << "changePrefix();"
          end
        end
      end
    end
  end

Вид:

<%= link_to("odd", url_for(:controller => "main", :action => "change", :kind => "odd"), :remote => true) %>
<%= link_to("even", url_for(:controller => "main", :action => "change", :kind => "even"), :remote => true) %>
<div id="list_of_numbers"><%= render :partial => "odd" %><div>

На стороне сервера я вижу это:

Запущено GET "/ change? Kind = odd" для 10.0.8.9 в ср. 04 января 11:10:59 +0100 2012 Обработка MainController # изменить как параметры HTML: {"kind" => "odd"} Выполнено 406 Недопустимо в 0ms

И IE 9 говорит то же самое.

Есть идеи, почему это не работает с IE9?

1 Ответ

0 голосов
/ 06 января 2012

Оказалось, что версия 1.7_rc2 файла prototype.js, поставляемого с рельсами 3.0.9, имела некоторые проблемы с render :update.После использования последней стабильной версии prototypejs (1.7.0) проблема исчезла.

...