Проблемы маршрутизации с многокомпонентными формами на Heroku - PullRequest
2 голосов
/ 14 мая 2011

Это очень странная проблема, и, к сожалению, я не могу предоставить тонны информации, так как даже не знаю, с чего начать диагностику проблемы. Я надеюсь, что кто-то услышит, как волшебно знает, что делать, и я рад разъяснить по мере необходимости.

По какой-то причине, каждый раз, когда я отправляю новую форму, состоящую из нескольких частей, с вложенным файлом в Heroku, используя Chrome, меня отправляют после отправки по умолчанию действия «index» - то есть страницы, на которую я буду отправляться, если Я отправил GET вместо POST.

Я использую стандартные RESTful-маршруты в Rails, поэтому у меня в маршруте есть следующее:

resources :documents do
  member do
    get :download, :follow
  end
end

Мои формы довольно стандартны:

<%= form_for @document, :html => { :multipart => true } do |f| %>
  <!-- Form code -->
<% end %>

Но, опять же, это рассматривается как GET, а не как запрос POST, поэтому я просто перенаправлен в / documents. Это верно, даже если я вручную укажу :method => :post в определении формы.

Действительно, очень странная вещь в том, что это происходит только на Heroku и только на Chrome. Формы отлично работают на моей локальной версии разработчика с использованием Chrome или на Heroku с использованием Safari.

В коде не происходит никакого перенаправления, и когда я проверяю журналы Heroku, он только сообщает GET в / документов, а не POST с последующей обработкой, которая могла бы объяснить это.

Любая помощь будет принята с благодарностью. Я действительно не знаю, с чего начать пытаться решить эту проблему.

UPDATE: Я использую Chrome для Mac версии 12.0.742.53 бета.

Вот вывод формы.

<form accept-charset="UTF-8" action="/documents" class="new_document" enctype="multipart/form-data" id="new_document" method="post">
  <div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="q8Qv4q9BXdV4yWzsPx9cgZoFGhJHxj6Nzje/SSnYsYo=" /></div>
  ....
  <input type="file" name="document[file]" />
  ....
</form>

Ничто не выглядит неправильно с маршрутами, которые включают в себя следующее:

POST   /documents(.:format)   {:action=>"create", :controller=>"documents"}

1 Ответ

0 голосов
/ 21 мая 2011

Не могли бы вы подтвердить, что у вас есть <%= csrf_meta_tag %> в вашем представлении

...