У меня есть форма с remote => true. И сейчас мой контроллер выглядит следующим образом:Перенаправление после успешной формы ajax
# POST /items
# POST /items.json
def create
@item = @store.items.build(params[:item])
respond_to do |format|
if @item.save
format.html { redirect_to edit_admin_item_path(@item), :flash => {:success => "#{@item.name} was successfully created."} }
format.js { render :js => "window.location.href = ('#{edit_admin_item_path(@item)}');"}
format.json { render json: @item, status: :created, location: @item }
else
format.html { render action: "new" }
format.js { render :partial => 'fail_create.js.erb', :locals => { :ajax_errors => @item.errors.full_messages } }
format.json { render json: @item.errors, status: :unprocessable_entity }
end
end
end
который работает, но чувствует себя очень неуклюжим. Это также не позволяет мне использовать флеш-уведомление, что действительно печально.
В идеале я чувствую, что я должен быть в состоянии просто использовать «format.js {redirect_to ...} или проверить против заголовков запроса и redirect_to. Sheesh!
Я не уверен, что лучшее решение Любые советы были бы супер-потрясающими, спасибо заранее!
- PS - Я знаю, что это было задано несколько раньше, но безрезультатно: How to redirect after a successful AJAX form submission. Кажется, есть много вопросов, похожих на плавающие, но реальных решений нет.
Возможно, у меня что-то не хватает, но не все ли форма представления AJAX, что он * не требует загрузки страницы? Если вы собираетесь перенаправить, можете ли вы не просто сделать старомодный подарок? – jimw
Ajax используется для проверки валидации и дублирования записей. Затем обновите сообщение с сообщением об ошибке. Когда форма будет успешной, я тогда хочу перенаправить на edit_path. У чего есть загрузка изображений и другие вещи. – Galaxy
Правильно, но вы можете выполнить проверку формы JS без представления AJAX. Единственная причина, по которой я знаю, отправлять через AJAX, - это избежать загрузки страницы. – jimw