Как перенаправить после успешной отправки формы AJAX (Rails 3.2) - PullRequest
3 голосов
/ 01 марта 2012

Предположим, у вас есть форма редактирования с :remote => true.Ваш метод контроллера выглядит как

 def update
    @article = Article.find(params[:id])

    respond_to do |format|
        if @article.update_attributes(params[:article])
            format.html { redirect_to @article}
            format.js { render :js => "window.location.replace('#{article_path(@article)}');"}
        else
            format.html { render :action => "edit" }
            # Render update.js.erb which replaces the body of the form
            format.js {}
        end
    end
end

Каков наилучший способ сделать перенаправление при успешном обновлении статьи в Rails 3.2.1?Необработанное решение JS выглядит немного неряшливо, но мне нравится тот факт, что очевидно, что оно выполняет ту же функцию, что и версия format.html.

Я бы предпочел решение, не использующее RJS ( если это работает даже в Rails 3.2 ?)

Ответы [ 2 ]

1 голос
/ 01 декабря 2014

Как насчет добавления строки кода ниже к самому файлу представления

#some_file.js.erb

`window.location = redirect_path

Как вы упомянули в вопросе, вы не предпочитаете RJS, но я думаю, что лучше следовать этому шаблону лучше, чем писатьJS код в контроллере.

0 голосов
/ 01 марта 2012

Взаимодействует ли ваш ajax с моделью (.php, .asp?). Мой предпочтительный метод в этом случае - создать критерии успеха / неудачи в модели после отправки и перенаправить напрямую оттуда. Не уверен, имеет ли это смысл в этом приложении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...