Rails 3 - AJAX, ответ JS - Как обрабатывать ошибки - PullRequest
5 голосов
/ 19 октября 2010

С учетом следующего контроллера:

def create
      if @mymodel.save
        format.js
      else
        format.js   { render :js => @mymodel.errors }
      end
end

Что такое Rails-способ обработки ответа на ошибку .JS ... Создаю ли я файл .js с другим именем файла только для ошибок сервера?

Добавлять ли IF ELSE в файл .js?

спасибо

1 Ответ

8 голосов
/ 24 февраля 2011

Прошло много времени с тех пор, как этот вопрос был опубликован, но я потратил некоторое время на то, чтобы выяснить это, и не смог найти слишком много помощи по этому вопросу в Интернете, поэтому:

Решение - создать .js.erb файлы - один для успеха и один для отказа.

  def create
    @foo = Foo.new(params[:foo])
    if @foo.save
      respond_to do |format|
          format.html { redirect_to root_path }
          format.js   { render :action => "success"}  #rails now looks for success.js.erb
        end
    else
      respond_to do |format|
        format.html { render :action => 'new'}
        format.js   { render :action => "failure"}  #rails now looks for failure.js.erb
      end
    end
  end
end 

Если кажется, что если вы не укажете имя файла, rails будет искать create.js.erb в обоих случаях (потому что format.js вызывается из create).Это не очень хорошо в случае успеха / ошибки, потому что вы хотите различное поведение для каждого сценария - поэтому переопределите имена файлов с помощью атрибута: action.

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