2013-03-22 4 views
1

У меня возникла проблема с отправкой формы. Он перенаправляет действие шоу. Если я обновляю страницу (ctrl + r), она открывает приглашение, спрашивающее, хочу ли я «Подтвердить повторную передачу формы», чего я не хочу делать.Как предотвратить «повторную отправку формы» после перенаправления в рельсах

Кто-нибудь видел эту проблему раньше и знает, как ее исправить?

Вот код:

Вид формы:

= simple_form_for @book_request do |f| 
    = f.input :title 
    .actions= f.submit 

Шоу вид

%dl 
    %dt Title 
    %dd= @book_request.title 

Мой контроллер:

... 

respond_to :html 

def show 
    respond_with(@book_request = BookRequest.find(params[:id])) 
end 

def new 
    respond_with(@book_request = BookRequest.new) 
end 

def create 
    @book_request = BookRequest.new(params[:book_request]) 
    @book_request.save 
    respond_with(@book_request) 
end 

def edit 
    respond_with(@book_request = BookRequest.find(params[:id])) 
end 

def update 
    @book_request = BookRequest.find(params[:id]) 
    @book_request.update_attributes(params[:book_request]) 
    respond_with(@book_request) 
end 

... 

Обновление:

Эта проблема выглядит так, как будто она решена. Я только что обновил версию chrome версии 26.0.1410.43 и работает, как ожидалось.

+0

Итак, я попробовал его в Firefox (я использую Chrome), и он работает как ожидалось (без подсказки), возможно, это ошибка в Chrome. – spullen

+1

Пункт перенаправления после отправки формы заключается в том, чтобы избежать этой проблемы. Это действительно не должно происходить, я думаю, что здесь больше играть. Есть код? – sevenseacat

+1

Вы уверены, что перенаправляетесь к действию show, а не просто вызываете его как часть того же цикла запроса/ответа? – qqx

ответ

1

Это ошибка в хроме. Должно быть исправлено в ближайшее время. Для получения дополнительной информации см. https://code.google.com/p/chromium/issues/detail?id=177855

Редактировать: Если вы хотите временное исправление (для целей разработки), вы можете просто добавить любой параметр get к URL-адресу для отправки. После работы с POST перенаправление, как обычно.

= simple_form_for @book_request, url: books_url(time: DateTime.now) do |f| 
    = f.input :title 
    .actions= f.submit 
+0

Спасибо, что нашли это, проблема с хромом, поскольку она работала, как ожидалось, в других браузерах. – spullen

Смежные вопросы