Это очень странная проблема, и, к сожалению, я не могу предоставить тонны информации, так как даже не знаю, с чего начать диагностику проблемы. Я надеюсь, что кто-то услышит, как волшебно знает, что делать, и я рад разъяснить по мере необходимости.
По какой-то причине, каждый раз, когда я отправляю новую форму, состоящую из нескольких частей, с вложенным файлом в 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="✓" /><input name="authenticity_token" type="hidden" value="q8Qv4q9BXdV4yWzsPx9cgZoFGhJHxj6Nzje/SSnYsYo=" /></div>
....
<input type="file" name="document[file]" />
....
</form>
Ничто не выглядит неправильно с маршрутами, которые включают в себя следующее:
POST /documents(.:format) {:action=>"create", :controller=>"documents"}